关于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算法应用实战之队列详解
Feb 04 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
python实现简易内存监控
Jun 21 Python
python保存网页图片到本地的方法
Jul 24 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python操作kafka实践的示例代码
Jun 19 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
django form和field具体方法和属性说明
Jul 09 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
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
PHP反射API示例分享
2016/10/08 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
用jscript实现新建word文档
2007/06/15 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
Javascript学习指南
2014/12/01 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
python中argparse模块用法实例详解
2015/06/03 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
python模糊图片过滤的方法
2018/12/14 Python
使用python实现画AR模型时序图
2019/11/20 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Python datetime 如何处理时区信息
2020/09/02 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python