当我用tf.read_file读取文件时,会得到类型为tf.string的文件。文档中只提到它是“可变长度字节数组”。张量的每个元素都是一个字节数组。我不知道怎么解释。
我对这种类型无能为力。在通常的python中,可以通过索引获取元素,比如my_string[:4],但是当我运行下面的代码时,会得到一个错误。import tensorflow as tf
import numpy as np
x = tf.constant("This is string")
y = x[:4]
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
result = sess.run(y)
print result
上面写着File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py", line 621, in assert_has_rank
raise ValueError("Shape %s must have rank %d" % (self, rank))
ValueError: Shape () must have rank 1
另外,我不能将字符串转换为tf.float32张量。它是.flo文件,并且有神奇的头“PIEH”。这个numpy代码成功地将这样的头转换成了数字(参见这里的例子https://stackoverflow.com/a/28016469/4744283),但是我不能用tensorflow来实现。我试过tf.string_to_number(string, out_type=tf.float32)但是上面说tensorflow.python.framework.errors.InvalidArgumentError: StringToNumberOp could not correctly convert string: PIEH
那么,什么是弦?它的形状是什么?我怎么能至少得到绳子的一部分?我想如果我能得到它的一部分,我可以跳过“派”的一部分。
UPD:我忘了说tf.slice(string, [0], [4])也不适用于相同的错误。