关于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之入门(四)运算
May 27 Python
Python单例模式实例分析
Jan 14 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
python里 super类的工作原理详解
Jun 19 Python
python简单实现9宫格图片实例
Sep 03 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
Python获取android设备cpu和内存占用情况
Nov 15 Python
Python中return函数返回值实例用法
Nov 19 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
Python Socket编程详解
Apr 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 register_shutdown_function函数的深入解析
2013/06/03 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
基于vue的换肤功能的示例代码
2017/10/10 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
Python中单例模式总结
2018/02/20 Python
python实现多层感知器
2019/01/18 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
三方协议书
2015/01/27 职场文书
校车安全管理责任书
2015/05/11 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL