Python 如何将固定镜头功能写入tfrecord
我正在努力学习编写tensorflow tfrecord文件的基础知识。我正在用python编写一个带有ndarray的简单示例,但出于某种原因,当我阅读它时,它必须是可变长度的,并将其作为SparseTensor读取 下面是一个例子Python 如何将固定镜头功能写入tfrecord,python,tensorflow,tensorflow-datasets,Python,Tensorflow,Tensorflow Datasets,我正在努力学习编写tensorflow tfrecord文件的基础知识。我正在用python编写一个带有ndarray的简单示例,但出于某种原因,当我阅读它时,它必须是可变长度的,并将其作为SparseTensor读取 下面是一个例子 def serialize_tf_record(features, targets): record = { 'shape': tf.train.Int64List(value=features.shape), 'featu
def serialize_tf_record(features, targets):
record = {
'shape': tf.train.Int64List(value=features.shape),
'features': tf.train.FloatList(value=features.flatten()),
'targets': tf.train.Int64List(value=targets),
}
return build_tf_example(record)
def deserialize_tf_record(record):
tfrecord_format = {
'shape': tf.io.VarLenFeature(tf.int64),
'features': tf.io.VarLenFeature(tf.float32),
'targets': tf.io.VarLenFeature(tf.int64),
}
features_tensor = tf.io.parse_single_example(record, tfrecord_format)
return features_tensor
有人能向我解释为什么这会写可变长度的记录吗?它在代码中是固定的,但我似乎无法以tensorflow知道其固定的方式来编写它。tensorflow文档在这里非常可怕。有人能为我解释一下API吗?您应该提供更多上下文代码,比如您的
构建示例
函数以及功能和目标的示例
下面是一个返回稠密张量的示例:
将numpy作为np导入
导入tensorflow作为tf
def build_tf_示例(记录):
返回tf.train.Example(features=tf.train.features(feature=record)).SerializeToString()
def序列化_tf_记录(功能、目标):
记录={
“形状”:tf.train.Feature(int64_list=tf.train.Int64List(value=features.shape)),
“功能”:tf.train.Feature(float\u list=tf.train.FloatList(value=features.flatte()),
“目标”:tf.train.Feature(int64_list=tf.train.Int64List(value=targets)),
}
返回build\u tf\u示例(记录)
def反序列化_tf_记录(记录):
tfrecord\u格式={
“形状”:tf.io.FixedLenSequenceFeature((),dtype=tf.int64,allow_missing=True),
“功能”:tf.io.FixedLenSequenceFeature((),dtype=tf.float32,allow_missing=True),
“目标”:tf.io.FixedLenSequenceFeature((),dtype=tf.int64,allow_missing=True),
}
features\u tensor=tf.io.parse\u single\u示例(record,tfrecord\u格式)
张量返回特征
def main():
特征=np.零((3,5,7))
targets=np.ones((4,),dtype=int)
打印(反序列化\u tf\u记录(序列化\u tf\u记录(特性、目标)))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
- 我将
转换为功能字典(以便轻松序列化)记录
- 据我所知,每个特征都可以是一个数组(与标量值相对),因此可以使用
input特征对其进行解析,以构建密集张量而不是稀疏张量FixedLenSequenceFeature