如何创建encode_raw张量流函数?

Fra*_*Ong 5 tensorflow

我试图执行与tf.decode_raw相反的操作.

一个例子将给出一个dtype = tf.float32的张量,我想有一个函数encode_raw()接受一个浮动张量并返回一个类型为字符串的Tensor.

这很有用,因为我可以使用tf.write_file来编写文件.

有没有人知道如何使用现有函数在Tensorflow中创建这样的函数?

All*_*oie 3

我建议使用 来将数字写为文本tf.as_string。但是,如果您确实想将它们写为二进制字符串,则事实证明这是可能的:

import tensorflow as tf

with tf.Graph().as_default():
  character_lookup = tf.constant([chr(i) for i in range(256)])
  starting_dtype = tf.float32
  starting_tensor = tf.random_normal(shape=[10, 10], stddev=1e5, 
                                     dtype=starting_dtype)
  as_string = tf.reduce_join(
      tf.gather(character_lookup,
                tf.cast(tf.bitcast(starting_tensor, tf.uint8), tf.int32)))
  back_to_tensor = tf.reshape(tf.decode_raw(as_string, starting_dtype),
                              [10, 10]) # Shape information is lost
  with tf.Session() as session:
    before, after = session.run([starting_tensor, back_to_tensor])
    print(before - after)
Run Code Online (Sandbox Code Playgroud)

这对我来说打印了一个全零的数组。