tensorflow中next_batch的具体使用


Posted in Python onFebruary 02, 2018

本文介绍了tensorflow中next_batch的具体使用,分享给大家,具体如下:

此处给出了几种不同的next_batch方法,该文章只是做出代码片段的解释,以备以后查看:

def next_batch(self, batch_size, fake_data=False):
  """Return the next `batch_size` examples from this data set."""
  if fake_data:
   fake_image = [1] * 784
   if self.one_hot:
    fake_label = [1] + [0] * 9
   else:
    fake_label = 0
   return [fake_image for _ in xrange(batch_size)], [
     fake_label for _ in xrange(batch_size)
   ]
  start = self._index_in_epoch
  self._index_in_epoch += batch_size
  if self._index_in_epoch > self._num_examples: # epoch中的句子下标是否大于所有语料的个数,如果为True,开始新一轮的遍历
   # Finished epoch
   self._epochs_completed += 1
   # Shuffle the data
   perm = numpy.arange(self._num_examples) # arange函数用于创建等差数组
   numpy.random.shuffle(perm) # 打乱
   self._images = self._images[perm]
   self._labels = self._labels[perm]
   # Start next epoch
   start = 0
   self._index_in_epoch = batch_size
   assert batch_size <= self._num_examples
  end = self._index_in_epoch
  return self._images[start:end], self._labels[start:end]

该段代码摘自mnist.py文件,从代码第12行start = self._index_in_epoch开始解释,_index_in_epoch-1是上一次batch个图片中最后一张图片的下边,这次epoch第一张图片的下标是从 _index_in_epoch开始,最后一张图片的下标是_index_in_epoch+batch, 如果 _index_in_epoch 大于语料中图片的个数,表示这个epoch是不合适的,就算是完成了语料的一遍的遍历,所以应该对图片洗牌然后开始新一轮的语料组成batch开始

def ptb_iterator(raw_data, batch_size, num_steps):
 """Iterate on the raw PTB data.

 This generates batch_size pointers into the raw PTB data, and allows
 minibatch iteration along these pointers.

 Args:
  raw_data: one of the raw data outputs from ptb_raw_data.
  batch_size: int, the batch size.
  num_steps: int, the number of unrolls.

 Yields:
  Pairs of the batched data, each a matrix of shape [batch_size, num_steps].
  The second element of the tuple is the same data time-shifted to the
  right by one.

 Raises:
  ValueError: if batch_size or num_steps are too high.
 """
 raw_data = np.array(raw_data, dtype=np.int32)

 data_len = len(raw_data)
 batch_len = data_len // batch_size #有多少个batch
 data = np.zeros([batch_size, batch_len], dtype=np.int32) # batch_len 有多少个单词
 for i in range(batch_size): # batch_size 有多少个batch
  data[i] = raw_data[batch_len * i:batch_len * (i + 1)]

 epoch_size = (batch_len - 1) // num_steps # batch_len 是指一个batch中有多少个句子
 #epoch_size = ((len(data) // model.batch_size) - 1) // model.num_steps # // 表示整数除法
 if epoch_size == 0:
  raise ValueError("epoch_size == 0, decrease batch_size or num_steps")

 for i in range(epoch_size):
  x = data[:, i*num_steps:(i+1)*num_steps]
  y = data[:, i*num_steps+1:(i+1)*num_steps+1]
  yield (x, y)

第三种方式:

def next(self, batch_size):
    """ Return a batch of data. When dataset end is reached, start over.
    """
    if self.batch_id == len(self.data):
      self.batch_id = 0
    batch_data = (self.data[self.batch_id:min(self.batch_id +
                         batch_size, len(self.data))])
    batch_labels = (self.labels[self.batch_id:min(self.batch_id +
                         batch_size, len(self.data))])
    batch_seqlen = (self.seqlen[self.batch_id:min(self.batch_id +
                         batch_size, len(self.data))])
    self.batch_id = min(self.batch_id + batch_size, len(self.data))
    return batch_data, batch_labels, batch_seqlen

第四种方式:

def batch_iter(sourceData, batch_size, num_epochs, shuffle=True):
  data = np.array(sourceData) # 将sourceData转换为array存储
  data_size = len(sourceData)
  num_batches_per_epoch = int(len(sourceData) / batch_size) + 1
  for epoch in range(num_epochs):
    # Shuffle the data at each epoch
    if shuffle:
      shuffle_indices = np.random.permutation(np.arange(data_size))
      shuffled_data = sourceData[shuffle_indices]
    else:
      shuffled_data = sourceData

    for batch_num in range(num_batches_per_epoch):
      start_index = batch_num * batch_size
      end_index = min((batch_num + 1) * batch_size, data_size)

      yield shuffled_data[start_index:end_index]

迭代器的用法,具体学习Python迭代器的用法

另外需要注意的是,前三种方式只是所有语料遍历一次,而最后一种方法是,所有语料遍历了num_epochs次

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python模块学习 re 正则表达式
May 19 Python
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
通过源码分析Python中的切片赋值
May 08 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
Python使用wxPython实现计算器
Jan 30 Python
python合并同类型excel表格的方法
Apr 01 Python
python 产生token及token验证的方法
Dec 26 Python
python 数据库查询返回list或tuple实例
May 15 Python
Python 在函数上添加包装器
Jul 28 Python
Python自动创建Excel并获取内容
Sep 16 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 31 Python
Python输出各行命令详解
Feb 01 #Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 #Python
Python实现的视频播放器功能完整示例
Feb 01 #Python
Python线性回归实战分析
Feb 01 #Python
Python使用matplotlib简单绘图示例
Feb 01 #Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 #Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 #Python
You might like
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
Python Matplotlib库入门指南
2015/05/18 Python
Python守护进程用法实例分析
2015/06/04 Python
python实现RSA加密(解密)算法
2016/02/17 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
python requests.post带head和body的实例
2019/01/02 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
幼儿教师个人求职信范文
2013/09/21 职场文书
我的网上商城创业计划书
2013/12/26 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
自主招生自荐信格式
2015/03/04 职场文书
施工安全保证书
2015/05/09 职场文书