关于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 29 Python
python strip()函数 介绍
May 24 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
python中format()函数的简单使用教程
Mar 14 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
Python中return self的用法详解
Jul 27 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
Django限制API访问频率常用方法解析
Oct 12 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 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
Zerg剧情介绍
2020/03/14 星际争霸
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
纯js实现背景图片切换效果代码
2010/11/14 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
玩转方法:call和apply
2014/05/08 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
浅谈node的事件机制
2017/10/09 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
pytyon 带有重复的全排列
2013/08/13 Python
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
python计算圆周率pi的方法
2015/07/11 Python
python绘制双柱形图代码实例
2017/12/14 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
python实现五子棋程序
2020/04/24 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
波兰在线运动商店:YesSport
2020/07/23 全球购物
师范生的个人求职信范文
2014/01/04 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
天地会口号
2014/06/17 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
人口与计划生育责任书
2015/05/09 职场文书
元宵节晚会主持词
2015/07/01 职场文书
教研活动主持词
2015/07/03 职场文书
2016十一国庆节感言
2015/12/09 职场文书
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python