关于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的汉字转GBK码实现代码
Feb 19 Python
Python中apply函数的用法实例教程
Jul 31 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
python实现求最长回文子串长度
Jan 22 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
Jun 22 Python
PyQt5实现简易计算器
May 30 Python
python内存管理机制原理详解
Aug 12 Python
jupyter lab文件导出/下载方式
Apr 22 Python
Django一小时写出账号密码管理系统
Apr 29 Python
Python实现仓库管理系统
May 30 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将向Java靠拢
2006/10/09 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
python制作最美应用的爬虫
2015/10/28 Python
python实现画圆功能
2018/01/25 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python绘制多个子图的实例
2019/07/07 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
巴西女装购物网站:Eclectic
2018/04/24 全球购物
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
奶茶专卖店创业计划书
2014/01/18 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
保险公司晨会主持词
2014/03/22 职场文书
求职简历自我评价2015
2015/03/10 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js