关于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 实现数据库更新脚本的生成方法
Jul 09 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
Python初学者常见错误详解
Jul 02 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
利用pytorch实现对CIFAR-10数据集的分类
Jan 14 Python
Python随机数函数代码实例解析
Feb 09 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
如何用 Python 制作 GitHub 消息助手
Feb 20 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
php while循环控制的简单实例
2016/05/30 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
全面解读Python Web开发框架Django
2014/06/30 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
python中异常报错处理方法汇总
2016/11/20 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
Python中最大递归深度值的探讨
2019/03/05 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
业务总经理岗位职责
2014/02/03 职场文书
我的小天地教学反思
2014/04/30 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫