关于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序列之list和tuple常用方法以及注意事项
Jan 09 Python
Python中type的构造函数参数含义说明
Jun 21 Python
python简单分割文件的方法
Jul 30 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
python添加模块搜索路径方法
Sep 11 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
Django 用户认证组件使用详解
Jul 23 Python
Django Haystack 全文检索与关键词高亮的实现
Feb 17 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
Python面向对象多态实现原理及代码实例
Sep 16 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实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
一个javascript参数的小问题
2008/03/02 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
Python图算法实例分析
2016/08/13 Python
python实现图像识别功能
2018/01/29 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
装修五一活动策划案
2014/01/23 职场文书
反邪教警示教育方案
2014/05/13 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
2015年科普工作总结
2015/07/23 职场文书