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 - Fatal编程技术网

Python 如何将浮点数组/列表转换为TFRecord?

Python 如何将浮点数组/列表转换为TFRecord?,python,tensorflow,Python,Tensorflow,这是用于将数据转换为TFRecord的代码 def _int64_feature(value): return tf.train.Feature(int64_list=tf.train.Int64List(value=[value])) def _bytes_feature(value): return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value])) def _floats_feature(valu

这是用于将数据转换为TFRecord的代码

def _int64_feature(value):
    return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))

 def _bytes_feature(value):
   return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

def _floats_feature(value):
   return tf.train.Feature(float_list=tf.train.FloatList(value=value))

with tf.python_io.TFRecordWriter("train.tfrecords") as writer:
    for row in train_data:
        prices, label, pip = row[0],row[1],row[2]
        prices = np.asarray(prices).astype(np.float32)
        example = tf.train.Example(features=tf.train.Features(feature={
                                           'prices': _floats_feature(prices),
                                           'label': _int64_feature(label[0]),
                                           'pip': _floats_feature(pip)
    }))
        writer.write(example.SerializeToString())
功能价格是一个形状数组(1288)。它成功地转换了!但是当使用解析函数和数据集API对数据进行解码时

def parse_func(serialized_data):
    keys_to_features = {'prices': tf.FixedLenFeature([], tf.float32),
                    'label': tf.FixedLenFeature([], tf.int64)}

    parsed_features = tf.parse_single_example(serialized_data, keys_to_features)
    return parsed_features['prices'],tf.one_hot(parsed_features['label'],2)
它给了我错误

C:\tf\u jenkins\workspace\rel win\M\windows gpu\PY\36\tensorflow\core\framework\op\u kernel.cc:1202]op\u REQUIRES在示例解析时失败。cc:240:无效参数:Key:prices。无法分析序列化的示例。 2018-03-31 15:37:11.443073:W C:\tf_jenkins\workspace\rel win\M\windows gpu\PY\36\tensorflow\core\framework\op_kernel.cc:1202]op_REQUIRES在示例解析操作中失败。cc:240:无效参数:键:价格。无法分析序列化的示例。 2018-03-31 15:37:11.443313:W C:\tf_jenkins\workspace\rel win\M\windows gpu\raise type(e)(节点定义,操作,消息) PY\36\tensortensorflow.python.framework.errors\u impl.invalidargumeinterror:Key:prices。无法分析序列化的示例。 [[Node:ParseSingleExample/ParseSingleExample=ParseSingleExample[Tdense=[DT_INT64,DT_FLOAT],稠密键=[“label”,“prices”],稠密形状=[[],[],[],num_sparse=0,稀疏键=[],稀疏类型=[](arg0,ParseSingleExample/Const,ParseSingleExample/Const\u 1)]] [[Node:IteratorGetNext\u 1=IteratorGetNextoutput\u shapes=[?],[?,2]],输出类型=[DT\u FLOAT,DT\u FLOAT],[u device=“/job:localhost/replica:0/任务:0/设备:CPU:0”]]fl ow\core\framework\op_kernel.cc:1202]op_REQUIRES在示例_解析_ops时失败。cc:240:无效参数:键:价格。无法分析序列化的示例


不能将n维数组存储为浮点特征,因为浮点特征是简单的列表。您必须通过执行
prices.tolist()
prices
扁平化为一个列表。如果您需要从展平的浮点特征恢复n维数组,那么您可以执行
prices=np。重塑(浮点特征,原始形状)

我发现了问题。不要使用
tf.io.FixedLenFeature
解析数组,而是使用
tf.io.FixedLenSequenceFeature


(对于TensorFlow 1,使用
tf.
而不是
tf.io.

我在不小心修改一些脚本时遇到了相同的问题,这是由于数据形状略有不同造成的。我必须更改形状以匹配预期的形状,例如
(A,B)
(1,A,B)
。我使用了
np.ravel()
进行展平。

如果您的功能是固定的一维数组,那么使用tf.FixedLenSequenceFeature根本不正确。如文档所述,tf.FixedLenSequenceFeature用于维度为2或更高的输入数据。 在本例中,您需要将price数组展平为(288,),然后对于解码部分,您需要提到数组维度

编码:

example = tf.train.Example(features=tf.train.Features(feature={
                                       'prices': _floats_feature(prices.tolist()),
                                       'label': _int64_feature(label[0]),
                                       'pip': _floats_feature(pip)
解码:

keys_to_features = {'prices': tf.FixedLenFeature([288], tf.float32),
                'label': tf.FixedLenFeature([], tf.int64)}

TFrecord
文件读取
float32
数据列表时,我也会遇到同样的情况

在执行
sess.run([time\u tensor,frequency\u tensor,frequency\u weight\u tensor])
tf.FixedLenFeature
时,我无法解析序列化的示例,尽管
tf.FixedLenSequenceFeature
似乎工作正常

我用于读取文件(工作文件)的功能格式如下:
feature\u格式={
“时间”:tf.FixedLenSequenceFeature([],tf.float32,allow_missing=True),
“频率”:tf.FixedLenSequenceFeature([],tf.float32,allow_missing=True),
“频率权重”:tf.FixedLenSequenceFeature([],tf.float32,allow_missing=True)
}

编码部分是:

功能={
“时间”:tf.train.Feature(float_list=tf.train.FloatList(value=[*某个单一值*]),表示,
“频率”:tf.train.Feature(float\u list=tf.train.FloatList(value=*some\u list*)),
“频率权重”:tf.train.Feature(float\u list=tf.train.FloatList(value=*some\u list*))
}

Debian机器上的TensorFlow 1.12没有GPU卸载(即仅使用TensorFlow的CPU),就会出现这种情况


我这边有什么误用吗?还是代码或文档中的错误?如果这对任何人都有好处的话,我可以考虑贡献/升级任何修复…

对于扁平化列表仍然不起作用。我仍然犯了上面的错误。你能详细说明一下这实际上是如何解决你的问题的,以及你的代码是如何工作的吗?@JonDeaton正如我前面提到的,我在使用FixedLenFeatures时犯了错误。但当我改为FixedLenSequenceFeature时,它起了作用。Prices是一个1D数组。对于tfrecord的编码,我使用了def _floats _feature(value):返回tf.train.feature(float _list=tf.train.FloatList(value=value)),对于解码:keys _to _features={'prices':tf.FixedLenSequenceFeature([],dtype=tf.float32,allow_missing=True),'label':tf.FixedLenFeature([],tf.int64)}@萨贾德诺鲁齐下面有一个答案似乎更正确。我已经设法使这两种方法都起作用了。然而,我不确定文件是否像他说的那样清晰。可能同时对其进行了编辑,但这似乎只是暗示FixedLenSequenceFeature应仅用于维度2或更高。编辑这个答案以提及另一个答案,或者整理这两种方法中哪一种是真正正确的,或者它们是否都是正确的,这可能是值得的。干杯由于我的功能存储为tf.strings、tf.float32或tf.float64的列表,因此存在类似的问题,因此提供相应的功能描述会有所帮助,例如“您的密钥”、tf.io.FixedLenSequenceFeature([],tf.string,allow_missing=True)