Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将固定镜头功能写入tfrecord_Python_Tensorflow_Tensorflow Datasets - Fatal编程技术网

Python 如何将固定镜头功能写入tfrecord

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

我正在努力学习编写tensorflow tfrecord文件的基础知识。我正在用python编写一个带有ndarray的简单示例,但出于某种原因,当我阅读它时,它必须是可变长度的,并将其作为SparseTensor读取

下面是一个例子

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()
  • 我将
    记录
    转换为功能字典(以便轻松序列化)
  • 据我所知,每个特征都可以是一个数组(与标量值相对),因此可以使用
    FixedLenSequenceFeature
    input特征对其进行解析,以构建密集张量而不是稀疏张量