何时将decode_raw与FixedLenFeature一起使用?

时间:2018-02-19 12:02:59

标签: tensorflow

我对TFRecord解码和编码的工作方式感到很困惑,特别是使用 <Resource name="jdbc/database" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="1000" username="***" password="***" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin***"/> 进行编码然后对其进行解码。

我想写TFRecord的三种数据:宽度/高度值(整数),图像数据和字符串标签。我已经在线查看了代码示例,但我不确定何时需要使用tf.train.Feature(bytes_list=tf.train.BytesList(...)),何时不需要。

例如,让我说这是我写作时的记录:

decode_raw

在阅读时,我目前正在解码def _bytes_feature(value): return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value])) def _int64_feature(value): return tf.train.Feature(int64_list=tf.train.Int64List(value=[value])) example = tf.train.Example(features= tf.train.Features(feature={ 'width': _int64_feature(256), 'height': _int64_feature(256), 'label': tf.train.Feature(bytes_list=tf.train.BytesList( value=['LABEL{}'.format(np.random.choice(range(5))).encode('utf-8')] )), 'image_raw': _bytes_feature(raw) })) 功能,因为它将一串字节变为数字,这就是我想要的。但我的image_raw应该是原始字符串,而label应该是原始数字:

width/height

当我将数字数据写为字节字符串时,我猜我只使用features = { 'width': tf.FixedLenFeature([], tf.int64), 'height': tf.FixedLenFeature([], tf.int64), 'label': tf.FixedLenFeature([], tf.string), 'image_raw': tf.FixedLenFeature([], tf.string), } parsed_features = tf.parse_single_example(example_proto, features) # Decode the raw bytes so it becomes a tensor with type. image = tf.decode_raw(parsed_features['image_raw'], tf.uint16) # Is parsed_features['label'] a valid string now? # Are parsed_features['width'] and ['height'] good to use now? - 这是正确的吗?

1 个答案:

答案 0 :(得分:3)

是的,decode_raw只会输出数字类型,因此只有当你想将字节字符串转换为数字值时才使用它,就像你对图像一样。

来源:https://www.tensorflow.org/api_docs/python/tf/decode_raw