【新开一个坑系列】Tensorflow实战Google框架 学习

第一讲 图像数据处理

包括 如何统一输入数据的格式 多线程处理(重要)最新的数据集API 

7.1TFRecord 输入数据格式

TFRecords文件包含了tf.train.Example 协议内存块(protocol buffer)(协议内存块包含了字段 Features)。我们可以写一段代码获取你的数据, 将数据填入到Example协议内存块(protocol buffer),将协议内存块序列化为一个字符串, 并且通过tf.python_io.TFRecordWriter 写入到TFRecords文件。
而关于TFRecord具体的定义 又牵扯到了通信方面的protocol buffer 

具体可见链接 https://blog.csdn.net/briblue/article/details/53187780 

通俗点来讲它跟xml和json是一类。是一种数据交互格式协议 是二进制的 比起格式化的xml就显得更方便 而且主流的几种语言都支持。

TFRecord 怎么用?

TFRecord 是一种文件格式,那么对于 TFRecord 文件的 IO 怎么处理呢?

事实上,Tensorflow 给我们提供了丰富的 API ,开发者运用这些 API 可以轻松地处理 TFRecord 文件。

先是读写

def write_test(input,output):
    ''' 借助于 TFRecordWriter 才能将信息写进 TFRecord 文件'''
    writer = tf.python_io.TFRecordWriter(output)

    # 读取图片并进行解码
    image = tf.read_file(input)
    image = tf.image.decode_jpeg(image)

    with tf.Session() as sess:
        image = sess.run(image)
        shape = image.shape
        # 将图片转换成 string。
        image_data = image.tostring()
        print(type(image))
        print(len(image_data))
        name = bytes("cat", encoding='utf8')
        print(type(name))

        # 创建 Example 对象,并且将 Feature 一一对应填充进去。
        example = tf.train.Example(features=tf.train.Features(feature={
            'name': tf.train.Feature(bytes_list=tf.train.BytesList(value=[name])),
            'shape': tf.train.Feature(int64_list=tf.train.Int64List(value=[shape[0], shape[1], shape[2]])),
            'data': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image_data]))
        }
        ))//两个区分 一个是features 一个是feature  feature包括 name shape data
//name 和data都是二进制类 shape是Int类

        # 将 example 序列化成 string 类型,然后写入。
        writer.write(example.SerializeToString())

        writer.close()

write_test('zjy.jpg','zjy.tfrecord')


这样便生成了项目下的一个tfrecord

以上步骤便可以将mnist数据集全部整理成tfrecord格式

那今天就到此为止啦 日常心情不好严重影响学习效率hhhh

你可能感兴趣的:(机器学习)