人工智能从入门到精通(16)

来源:互联网 发布:2016年零售业数据 编辑:程序博客网 时间:2024/06/06 11:49

图像数据处理

  1. 统一输入数据格式
  2. 图像数据预处理
  3. tensorflow多线程数据预处理

TFRecord样例程序

下面的代码是将输入数据转成TFRecord的格式

import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_dataimport numpy as npdef _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]))mnist = input_data.read_data_sets("/path/to/MNIST_data", dtype=tf.uint8, one_hot=True)images = mnist.train.images#训练数据所对应的正确答案,可以作为一个属性来存储labels = mnist.train.labels#训练数据的图像分辨率,可以作为一个属性来存储pixels = images.shape[0]#训练数据的个数num_examples = mnist.train.num_examples#指定要写入TFRecord文件的地址filename = "/path/to/output.tfrecords"#创建一个write来写TFRecord文件writer = tf.python_io.TFRecordWriter(filename)for index in range(num_examples):    #把图像矩阵转化为字符串    image_raw = images[index].tostring()    #将一个样例转化为Example Protocol Buffer,并将所有的信息写入这个数据结构    example = tf.train.Example(features=tf.train.Features(feature={        'pixels': _int64_feature(pixels),        'label': _int64_feature(np.argmax(labels[index])),        'image_raw': _bytes_feature(image_raw)}))    #将 Example 写入TFRecord文件    writer.write(example.SerializeToString())writer.close()

读取:

import tensorflow as tfreader=tf.TFRecordReader()filename_queue=tf.train.string_input_producer(["/path/to/output.tfrecords"])_,serialized_example=reader.read(filename_queue)features=tf.parse_single_example(    serialized_example,    features={        'image_raw':tf.FixedLenFeature([],tf.string),        'pixels':tf.FixedLenFeature([],tf.int64),        'label':tf.FixedLenFeature([],tf.int64),    })images=tf.decode_raw(features['image_raw'],tf.uint8)labels=tf.cast(features['label'],tf.int32)pixels=tf.cast(features['pixels'],tf.int32)sess=tf.Session()coord=tf.train.Coordinator()threads=tf.train.start_queue_runners(sess=sess,coord=coord)for i in range(10):    image,lable,pixel=sess.run([images,labels,pixels])