Che*_*Wei 3 python numpy tensorflow
全部
我正在尝试将数据序列化到 tensorflow 中的 tfrecords 文件。我按照这里的说明操作:https : //github.com/tensorlayer/tensorlayer/blob/master/example/tutorial_tfrecord.py
如本说明所示,我需要example 为每个记录构建一个,每个记录example包含多个feature.
但是,我在初始化该功能时遇到了问题。这是我的测试代码:
import tensorflow as tf
import numpy as np
feature_str=tf.train.Feature(bytes_list=tf.train.BytesList(value = np.array(["a" , "b"])))
feature_int=tf.train.Feature(bytes_list=tf.train.Int64List(value = np.array([32 , 24])))
feature_flo=tf.train.Feature(bytes_list=tf.train.FloatList(value = np.array([32.1 , 24.1 ])))
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了以下错误,这是直觉的:
usr/local/lib/python2.7/dist-packages/h5py/ init .py:36: FutureWarning:不推荐将 issubdtype 的第二个参数从floatto转换np.floating。将来,它将被视为np.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters Traceback(最近一次调用):文件“test.py”,第7行,在feature_int=tf.train.Feature(bytes_list=tf.train.Int64List(value = np.array([32 , 24]))) 类型错误:MergeFrom() 的参数必须是同一类的实例:预期的 tensorflow.BytesList 得到了 tensorflow.Int64List。
我进一步尝试使用tf.train.BytesListfornp.array([32,24])并得到以下错误:
feature_int=tf.train.Feature(bytes_list=tf.train.BytesList(value = np.array([32 , 24]))) TypeError: 32 类型为 numpy.int64,但预期为以下之一:字节
任何人都可以帮助我解决这个问题吗?我真的很困惑。
谢谢!
您需要提供bytes给bytes_list而不是string。下面给出了所有三种情况的示例:
到 TFRecords:
output_file = 'out.tfrecord'
writer = tf.python_io.TFRecordWriter(output_file)
"""Build an Example proto
"""
feature = {}
feature['str'] = tf.train.Feature(
bytes_list=tf.train.BytesList(value = [b"a",b"b"]))
feature['int'] = tf.train.Feature(int64_list=tf.train.Int64List(value = np.array([32 , 24])))
feature['flo'] = tf.train.Feature(float_list=tf.train.FloatList(value = np.array([32.1 , 24.1 ])))
features = tf.train.Features(feature=feature)
example = tf.train.Example(features=features)
serialized = example.SerializeToString()
writer.write(serialized)
writer.close()
Run Code Online (Sandbox Code Playgroud)
从 TFRecords 读取:
for serialized_example in tf.python_io.tf_record_iterator('out.tfrecord'):
example = tf.train.Example()
example.ParseFromString(serialized_example)
print(example.features.feature['str'].bytes_list.value)
print(np.array(example.features.feature['int'].int64_list.value))
print(np.array(example.features.feature['flo'].float_list.value))
Run Code Online (Sandbox Code Playgroud)
输出:
[b'a', b'b']
[32 24]
[32.09999847 24.10000038]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6823 次 |
| 最近记录: |