当我读取文件时,tf.read_file
我得到了 type 的东西tf.string
。文档只说它是“可变长度字节数组。张量的每个元素都是一个字节数组。” (https://www.tensorflow.org/versions/r0.10/resources/dims_types.html)。我不知道如何解释这一点。
我对这种类型无能为力。在通常的 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
它说
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py”,第 621 行,在 assert_has_rank raise ValueError("形状 %s 必须有等级 %d" % (self, rank)) ValueError:形状()必须具有等级 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 无法正确转换字符串:PIEH
那么,什么是字符串?它的形状是什么?我怎样才能至少得到字符串的一部分?我想如果我能得到它的一部分,我可以跳过“PIEH”部分。
UPD:我忘了说tf.slice(string, [0], [4])
同样的错误也不起作用。