我对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?
- 这是正确的吗?
答案 0 :(得分:3)
是的,decode_raw只会输出数字类型,因此只有当你想将字节字符串转换为数字值时才使用它,就像你对图像一样。