在自定义数据集中:
example = tf.train.Example(features=tf.train.Features(feature={
‘img_raw’: tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw])),
‘label’: tf.train.Feature(int64_list=tf.train.Int64List(value=labels))
}))
下面简要谈一谈我对其的理解
创建 Example 对象,并且将 Feature(img_raw,label) 一一对应填充进去。并保存到writer中。
tf.train.Example的定义如下:
message Example {
Features features = 1;
};
message Features{
map<string,Feature> featrue = 1;
};
message Feature{
oneof kind{
BytesList bytes_list = 1;
FloatList float_list = 2;
Int64List int64_list = 3;
}
};
从上述代码可以看出,tf.train.Example中包含了属性名称到取值的字典,其中属性名称为字符串,属性的取值可以为字符串(BytesList)、实数列表(FloatList)或者整数列表(Int64List)。
一般tf.train.Int64List
tf.train.FloatList
对应处理整数和浮点数,tf.train.BytesList
用于处理字符串的数据。
从上面可以看出一个 Example 消息体包含了一系列的 feature 属性。
每一个 feature 是一个 map,也就是 key-value 的键值对。
key 取值是 String 类型。
而 value 是 Feature 类型的消息体,它的取值有 3 种:
BytesList
FloatList
Int64List
需要注意的是,他们都是列表的形式。
举例说明:
1.构建writer,用于写入数据
2.创建 Example 对象,并且将 Feature(a,b,c) 一一对应填充进去。a,b,c三个不同格式的列表并保存到writer中
3.# 将 example 序列化成 string 类型,然后写入。即 writer.write(example.SerializeToString());
或者
serialized = example.SerializeToString()
writer.write(serialized)
# -- coding: utf-8 --
import tensorflow as tf
import numpy
writer = tf.python_io.TFRecordWriter(‘test1.tfrecord’)
for i in range(0, 2):
a = 0.520 + i
b = [2019 + i, 2018+i]
c = “测试”+str(i)
c_raw = c
print ‘i:’,i
print ‘ a:’,a
print ‘ b:’,b
print ‘ c:’,c
example = tf.train.Example(
features = tf.train.Features(
feature = {‘a’:tf.train.Feature(float_list = tf.train.FloatList(value=[a])),
‘b’:tf.train.Feature(int64_list = tf.train.Int64List(value = b)),
‘c’:tf.train.Feature(bytes_list = tf.train.BytesList(value = [c_raw]))}))
serialized = example.SerializeToString()
writer.write(serialized)
print ‘ writer’,i,’DOWN!’
writer.close()
- 本文链接:https://www.tjzzz.com/posts/a0572f6d.html
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。