1、准备数据

首选将自己的图像数据分类分别放在不同的文件夹下,比如新建data文件夹,data文件夹下分别存放up和low文件夹,up和low文件夹下存放对应的图像数据。也可以把up和low文件夹换成0和1。根据自己数据类别,自己设定。如图所示

以上三张图片注意看目录。这样数据就准备好了。

2、将图像数据转换成tfrecords

      直接上代码,代码中比较重要的部分我都做了注释。
  1. import os
  2. import tensorflow as tf
  3. from PIL import Image
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6.  
  7. sess=tf.InteractiveSession()
  8. cwd = "D://software//tensorflow//data//" #数据所在目录位置
  9. classes = {'up', 'low'} #预先自己定义的类别,根据自己的需要修改
  10. writer = tf.python_io.TFRecordWriter("train.tfrecords") #train表示转成的tfrecords数据格式的名字
  11.  
  12. for index, name in enumerate(classes):
  13. class_path = cwd + name + "/"
  14. for img_name in os.listdir(class_path):
  15. img_path = class_path + img_name
  16. img = Image.open(img_path)
  17. img = img.resize((300, 300)) #图像reshape大小设置,根据自己的需要修改
  18. img_raw = img.tobytes()
  19. example = tf.train.Example(features=tf.train.Features(feature={
  20. "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index])),
  21. 'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))
  22. }))
  23. writer.write(example.SerializeToString())
  24. writer.close()

3、从tfrecords中读取数据

直接上代码:

  1. #读取文件
  2. def read_and_decode(filename,batch_size):
  3. #根据文件名生成一个队列
  4. filename_queue = tf.train.string_input_producer([filename])
  5. reader = tf.TFRecordReader()
  6. _, serialized_example = reader.read(filename_queue) #返回文件名和文件
  7. features = tf.parse_single_example(serialized_example,
  8. features={
  9. 'label': tf.FixedLenFeature([], tf.int64),
  10. 'img_raw' : tf.FixedLenFeature([], tf.string),
  11. })
  12.  
  13. img = tf.decode_raw(features['img_raw'], tf.uint8)
  14. img = tf.reshape(img, [300, 300, 3]) #图像归一化大小
  15. # img = tf.cast(img, tf.float32) * (1. / 255) - 0.5 #图像减去均值处理,根据自己的需要决定要不要加上
  16. label = tf.cast(features['label'], tf.int32)
  17.  
  18. #特殊处理,去数据的batch,如果不要对数据做batch处理,也可以把下面这部分不放在函数里
  19.  
  20. img_batch, label_batch = tf.train.shuffle_batch([img, label],
  21. batch_size= batch_size,
  22. num_threads=64,
  23. capacity=200,
  24. min_after_dequeue=150)
  25. return img_batch, tf.reshape(label_batch,[batch_size])

需要注意的地方:

  1. img = tf.cast(img, tf.float32) * (1. / 255) - 0.5 #图像减去均值处理,根据自己的需要决定要不要加上
  1. #特殊处理,去数据的batch,如果不要对数据做batch处理,也可以把下面这部分不放在函数里
  2. img_batch, label_batch = tf.train.shuffle_batch([img, label],
  3. batch_size= batch_size,
  4. num_threads=64,
  5. capacity=200,
  6. min_after_dequeue=150)

如果不需要把数据做batch处理,则函数的第二个形参batch_size就去掉,函数直接返回img和label。也可以把batch处理部分放在函数外面,根据自己的需要自己修改一下。

4、转换和读取函数的调用

  1. tfrecords_file = 'train.tfrecords' #要读取的tfrecords文件
  2. BATCH_SIZE = 4 #batch_size的大小
  3. image_batch, label_batch = read_and_decode(tfrecords_file,BATCH_SIZE)
  4. print(image_batch,label_batch) #注意,这里不是tensor,tensor需要做see.run()处理

下面就定义session,执行即可,有一个地方需要注意,

  1.  
  1. image_batch, label_batch = read_and_decode(tfrecords_file,BATCH_SIZE) #需要注意

虽然能够把数据读取出来,但是不是tensor,在训练的时候需要image,label=sess.run([image_batch,label_batch])处理后,才能投入训练。具体细节下一篇博客再做详细介绍。

  1.  如果还有问题未能得到解决,搜索887934385交流群,进入后下载资料工具安装包等。最后,感谢观看!

深度学习tensorflow实战笔记(2)图像转换成tfrecords和读取的更多相关文章

  1. 深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)

    1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...

  2. 深度学习tensorflow实战笔记 用预训练好的VGG-16模型提取图像特征

    1.首先就要下载模型结构 首先要做的就是下载训练好的模型结构和预训练好的模型,结构地址是:点击打开链接 模型结构如下: 文件test_vgg16.py可以用于提取特征.其中vgg16.npy是需要单独 ...

  3. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  4. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  5. 深度学习入门实战(二)-用TensorFlow训练线性回归

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :董超 上一篇文章我们介绍了 MxNet 的安装,但 MxNet 有个缺点,那就是文档不太全,用起来可能 ...

  6. 深度学习Tensorflow相关书籍推荐和PDF下载

    深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...

  7. 深度学习Keras框架笔记之AutoEncoder类

    深度学习Keras框架笔记之AutoEncoder类使用笔记 keras.layers.core.AutoEncoder(encoder, decoder,output_reconstruction= ...

  8. 深度学习Keras框架笔记之TimeDistributedDense类

    深度学习Keras框架笔记之TimeDistributedDense类使用方法笔记 例: keras.layers.core.TimeDistributedDense(output_dim,init= ...

  9. 深度学习Keras框架笔记之Dense类(标准的一维全连接层)

    深度学习Keras框架笔记之Dense类(标准的一维全连接层) 例: keras.layers.core.Dense(output_dim,init='glorot_uniform', activat ...

随机推荐

  1. 【JavaScript】 控制自适应高度

    <iframe src="需要连接的iframe地址" id="iframepage" name="iframepage" frame ...

  2. 程序员修神之路--设计一套RPC框架并非易事

    菜菜哥,我最近终于把Socket通信调通了 这么底层的东西你现在都会了,恭喜你离涨薪又进一步呀 http协议不也是利用的Socket吗 可以这么说,http协议是基于TCP协议的,底层的数据传输可以说 ...

  3. 你也可以写聊天程序 - C# Socket学习1

    简述 我们做软件工作的虽然每天都离不开网络,可网络协议细节却不是每个人都会接触和深入了解.我今天就来和大家一起学习下Socket,并写一个简单的聊天程序. 一些基础类 首先我们每天打开浏览器访问网页信 ...

  4. Android实现apk插件方式换肤

    换肤思路: 1.什么时候换肤? xml加载前换肤,如果xml加载后换肤,用户将会看见换肤之前的色彩,用户体验不好. 2.皮肤是什么? 皮肤就是apk,是一个资源包,包含了颜色.图片等. 3.什么样的控 ...

  5. 对BFC规范的理解

    什么是BFC? BFC 全称为 块级格式化上下文(Block Fromatting Context),是Web页面的可视化CSS渲染出的一部分.它是块级盒布局出现的区域,也是浮动层元素进行交互的区域. ...

  6. Linux配置python

    文章出处  https://www.cnblogs.com/yhongji/p/9383857.html 我这里使用的时centos7-mini,centos系统本身默认安装有python2.x,版本 ...

  7. MQ相关面试题

    如果你的简历中有写到MQ,那么面试官一般会问到如下几个问题,至少我在面试中经常常被问到,所以今天总结一下,有不对的地方还望多多包涵: 首先第一个问题,为什么要用MQ? 如果这个问题你都没考虑过,那么说 ...

  8. java中的静态

    static静态 public static void main 类只是用来存储和被调用的,而对象是需要执行的,执行时就必定需要知道程序的入口,这个入口就是由main所在的位置. Java的类中没有m ...

  9. web安全之php中常见的INI文件配置

    php.ini 在 PHP 启动时被读取.对于服务器模块版本的 PHP,仅在 web 服务器启动时读取 一次.对于 CGI 和 CLI 版本,每次调用都会读取. * Apache web 服务器在启动 ...

  10. PHP array_udiff_assoc

    1.函数的参数:返回数组的差集,比较时包括键值. 2.函数的参数: @params array $array @params array $array1 @params array $array2 . ...