关于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用字典统计单词或汉字词个数示例
Apr 22 Python
python检测远程服务器tcp端口的方法
Mar 14 Python
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
Python3.6.2调用ffmpeg的方法
Jan 10 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
python实现ip代理池功能示例
Jul 05 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP5/ZendEngine2的改进
2006/10/09 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
Python线性方程组求解运算示例
2018/01/17 Python
Atom的python插件和常用插件说明
2018/07/08 Python
python修改txt文件中的某一项方法
2018/12/29 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
物流司机岗位职责
2013/12/28 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
师德承诺书2015
2015/04/28 职场文书
小学工作总结2015
2015/05/04 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript