在tensorflow的cifar10 example中,他们使用以下代码从binary file中读取图片:
image_bytes = result.height * result.width * result.depth
record_bytes = label_bytes + image_bytes
reader = tf.FixedLengthRecordReader(record_bytes=record_bytes)
result.key, value = reader.read(filename_queue)
# Convert from a string to a vector of uint8 that is record_bytes long.
record_bytes = tf.decode_raw(value, tf.uint8)
我的问题是我有一个类似的二进制文件,但有不同的类型(不像CIFAR10,只有第一个字节被强制转换为tf.int32
)。我的二进制文件的记录(行)类似于:
<1 x label (binary)> TYPE * 100
其中TYPE
是
<1 x float8> < 500 x binary> <1 x float8> <100 x binary>
即。我有一个二进制标签,后跟前一个字节序列的100倍。
我尝试使用tf.decode_raw
一系列类型,就像有人会在numpy中做的那样,但它不接受列表或类型元组。
知道如何直接在tensorflow中读取我的二进制文件吗?或者,任何想法如何有效地读取 记录并将它们放在具有给定形状的placeholders
中?