如何将numpy数组存储为tfrecord?

weixin_38067646 2019-09-12 03:13:41

我想从numpy数组中创建tfrecord格式的数据集。我试图存储2D和3D坐标。 2D坐标型的形状(2,10)的numpy的阵列float64 三维坐标型float64 的形状(3,10)的numpy的阵列,这是我的代码: def _floats_feature(value): return tf.train.Feature(float_list=tf.train.FloatList(value=value)) train_filename = 'train.tfrecords' # address to save the TFRecords file writer = tf.python_io.TFRecordWriter(train_filename) for c in range(0,1000): #get 2d and 3d coordinates and save in c2d and c3d feature = {'train/coord2d': _floats_feature(c2d), 'train/coord3d': _floats_feature(c3d)} sample = tf.train.Example(features=tf.train.Features(feature=feature)) writer.write(sample.SerializeToString()) writer.close() 当我运行此我得到的错误: feature = {'train/coord2d': _floats_feature(c2d), File "genData.py", line 19, in _floats_feature return tf.train.Feature(float_list=tf.train.FloatList(value=value)) File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\google\protobuf\internal\python_message.py", line 510, in init copy.extend(field_value) File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\google\protobuf\internal\containers.py", line 275, in extend new_values = [self._type_checker.CheckValue(elem) for elem in elem_seq_iter] File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\google\protobuf\internal\containers.py", line 275, in <listcomp> new_values = [self._type_checker.CheckValue(elem) for elem in elem_seq_iter] File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\google\protobuf\internal\type_checkers.py", line 109, in CheckValue raise TypeError(message) TypeError: array([-163.685, 240.818, -114.05 , -518.554, 107.968, 427.184, 157.418, -161.798, 87.102, 406.318]) has type <class 'numpy.ndarray'>, but expected one of: ((<class 'numbers.Real'>,),) 我不知道如何解决这个问题。我应该存储的功能为int64或字节?我不知道如何去做这件事,因为我对tensorflow完全陌生。任何帮助将是伟大的!感谢






...全文
225 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38081906 2019-09-12
  • 打赏
  • 举报
回复

tf.train.Feature的类只支持列表(或1-d阵列)使用float_list参数时。根据您的资料,您可以尝试以下方法之一: 拼合你的阵列中的数据将它传递给tf.train.Feature前: def _floats_feature(value): return tf.train.Feature(float_list=tf.train.FloatList(value=value.reshape(-1))) 请注意,您可能需要另一个功能添加到表明这个数据应该如何重塑当你再次解析它(你可以使用为目的的int64_list功能)。 将多维特征拆分为多个一维特征。例如,如果c2d包含N * 2阵列x和y坐标的,可以拆分特征为单独train/coord2d/x和train/coord2d/y特征,每个包含x和分别y坐标数据,。

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧