关于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 import用法以及与from...import的区别
May 28 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
python字符串的方法与操作大全
Jan 30 Python
对Python 数组的切片操作详解
Jul 02 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
python 构造三维全零数组的方法
Nov 12 Python
详解用Python实现自动化监控远程服务器
May 18 Python
Python常用编译器原理及特点解析
Mar 23 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
python使用布隆过滤器的实现示例
Aug 20 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 json_encode奇怪问题说明
2011/09/27 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
理解javascript async的用法
2017/08/22 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python实现CET查分的方法
2015/03/10 Python
python修改字典内key对应值的方法
2015/07/11 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
代码实例讲解python3的编码问题
2019/07/08 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
企业厂长岗位职责
2013/12/17 职场文书
公司道歉信范文
2014/01/09 职场文书
创意活动策划书
2014/01/15 职场文书
总经理的岗位职责
2014/02/23 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
2015年元旦活动总结
2014/05/09 职场文书
跑出一片天观后感
2015/06/08 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android