关于Tensorflow中的tf.train.batch函数的使用


Posted in Python onApril 24, 2018

这两天一直在看tensorflow中的读取数据的队列,说实话,真的是很难懂。也可能我之前没这方面的经验吧,最早我都使用的theano,什么都是自己写。经过这两天的文档以及相关资料,并且请教了国内的师弟。今天算是有点小感受了。简单的说,就是计算图是从一个管道中读取数据的,录入管道是用的现成的方法,读取也是。为了保证多线程的时候从一个管道读取数据不会乱吧,所以这种时候 读取的时候需要线程管理的相关操作。今天我实验室了一个简单的操作,就是给一个有序的数据,看看读出来是不是有序的,结果发现是有序的,所以直接给代码:

import tensorflow as tf
import numpy as np

def generate_data():
  num = 25
  label = np.asarray(range(0, num))
  images = np.random.random([num, 5, 5, 3])
  print('label size :{}, image size {}'.format(label.shape, images.shape))
  return label, images

def get_batch_data():
  label, images = generate_data()
  images = tf.cast(images, tf.float32)
  label = tf.cast(label, tf.int32)
  input_queue = tf.train.slice_input_producer([images, label], shuffle=False)
  image_batch, label_batch = tf.train.batch(input_queue, batch_size=10, num_threads=1, capacity=64)
  return image_batch, label_batch

image_batch, label_batch = get_batch_data()
with tf.Session() as sess:
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(sess, coord)
  i = 0
  try:
    while not coord.should_stop():
      image_batch_v, label_batch_v = sess.run([image_batch, label_batch])
      i += 1
      for j in range(10):
        print(image_batch_v.shape, label_batch_v[j])
  except tf.errors.OutOfRangeError:
    print("done")
  finally:
    coord.request_stop()
  coord.join(threads)

记得那个slice_input_producer方法,默认是要shuffle的哈。

Besides, I would like to comment this code.

1: there is a parameter ‘num_epochs' in slice_input_producer, which controls how many epochs the slice_input_producer method would work. when this method runs the specified epochs, it would report the OutOfRangeRrror. I think it would be useful for our control the training epochs.

2: the output of this method is one single image, we could operate this single image with tensorflow API, such as normalization, crops, and so on, then this single image is feed to batch method, a batch of images for training or testing wouldbe received.

tf.train.batch和tf.train.shuffle_batch的区别用法

tf.train.batch([example, label], batch_size=batch_size, capacity=capacity):[example, label]表示样本和样本标签,这个可以是一个样本和一个样本标签,batch_size是返回的一个batch样本集的样本个数。capacity是队列中的容量。这主要是按顺序组合成一个batch

tf.train.shuffle_batch([example, label], batch_size=batch_size, capacity=capacity, min_after_dequeue)。这里面的参数和上面的一样的意思。不一样的是这个参数min_after_dequeue,一定要保证这参数小于capacity参数的值,否则会出错。这个代表队列中的元素大于它的时候就输出乱的顺序的batch。也就是说这个函数的输出结果是一个乱序的样本排列的batch,不是按照顺序排列的。

上面的函数返回值都是一个batch的样本和样本标签,只是一个是按照顺序,另外一个是随机的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
部署Python的框架下的web app的详细教程
Apr 30 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
python实现趣味图片字符化
Apr 30 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
Python如何输出百分比
Jul 31 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
python非标准时间的转换
Jul 25 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 #Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 #Python
Windows上使用Python增加或删除权限的方法
Apr 24 #Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 #Python
解决python删除文件的权限错误问题
Apr 24 #Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 #Python
python3+PyQt5实现拖放功能
Apr 24 #Python
You might like
浅析php创建者模式
2014/11/25 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
原生js调用json方法总结
2018/02/22 Javascript
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
跟老齐学Python之有点简约的元组
2014/09/24 Python
python实现中文转换url编码的方法
2016/06/14 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Python实现的弹球小游戏示例
2017/08/01 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
Weblogic的布署方式
2013/08/23 面试题
应用心理学个人的求职信
2013/12/08 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python