参考书

《TensorFlow:实战Google深度学习框架》(第2版)

从文本文件中读取数据,并按照下面介绍的方案将数据整理成batch。

方法是:先将整个文档切分成若干连续段落,再让batch中的每一个位置负责其中一段。

  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. # coding=utf-8
  4.  
  5. """
  6. @author: Li Tian
  7. @contact: 694317828@qq.com
  8. @software: pycharm
  9. @file: word_deal3.py
  10. @time: 2019/2/23 16:36
  11. @desc: 从文本文件中读取数据,并按照下面介绍的方案将数据整理成batch。
  12. 方法是:先将整个文档切分成若干连续段落,再让batch中的每一个位置负责其中一段。
  13. """
  14.  
  15. import numpy as np
  16. import tensorflow as tf
  17.  
  18. # 使用单词编号表示的训练数据
  19. TRAIN_DATA = './ptb.train'
  20. TRAIN_BATCH_SIZE = 20
  21. TRAIN_NUM_STEP = 35
  22.  
  23. # 从文件中读取数据,并返回包含单词编号的数组
  24. def read_data(file_path):
  25. with open(file_path, "r") as fin:
  26. # 将整个文档读进一个长字符串
  27. id_string = ' '.join([line.strip() for line in fin.readlines()])
  28. # 将读取的单词编号转为整数
  29. id_list = [int(w) for w in id_string.split()]
  30. return id_list
  31.  
  32. def make_batches(id_list, batch_size, num_step):
  33. # batch_size: 一个batch中样本的数量
  34. # num_batches:batch的个数
  35. # num_step: 一个样本的序列长度
  36. # 计算总的batch数量。每个batch包含的单词数量是batch_size * num_step
  37. num_batches = (len(id_list) - 1) // (batch_size * num_step)
  38.  
  39. # 将数据整理成一个维度为[batch_size, num_batches*num_step]的二维数组
  40. data = np.array(id_list[: num_batches * batch_size * num_step])
  41. data = np.reshape(data, [batch_size, num_batches * num_step])
  42.  
  43. # 沿着第二个维度将数据切分成num_batches个batch,存入一个数组。
  44. data_batches = np.split(data, num_batches, axis=1)
  45.  
  46. # 重复上述操作,但是每个位置向右移动一位,这里得到的是RNN每一步输出所需要预测的下一个单词
  47. label = np.array(id_list[1: num_batches * batch_size * num_step + 1])
  48. label = np.reshape(label, [batch_size, num_batches * num_step])
  49. label_batches = np.split(label, num_batches, axis=1)
  50. # 返回一个长度为num_batches的数组,其中每一项包括一个data矩阵和一个label矩阵
  51. print(len(id_list))
  52. print(num_batches * batch_size * num_step)
  53. return list(zip(data_batches, label_batches))
  54.  
  55. def main():
  56. train_batches = make_batches(read_data(TRAIN_DATA), TRAIN_BATCH_SIZE, TRAIN_NUM_STEP)
  57. # 在这里插入模型训练的代码。训练代码将在后面提到。
  58. for i in train_batches:
  59. print(i)
  60.  
  61. if __name__ == '__main__':
  62. main()

运行结果:

自然语言处理(三)——PTB数据的batching方法的更多相关文章

  1. JSON三种数据解析方法(转)

    原 JSON三种数据解析方法 2018年01月15日 13:05:01 zhoujiang2012 阅读数:7896    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  2. Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)

    jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...

  3. 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;

    http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用) ...

  4. 《驾驭Core Data》 第三章 数据建模

    本文由海水的味道编译整理,请勿转载,请勿用于商业用途.    当前版本号:0.1.2 第三章数据建模 Core Data栈配置好之后,接下来的工作就是设计对象图,在Core Data框架中,对象图被表 ...

  5. 用 Python 排序数据的多种方法

    用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...

  6. Excel应该这么玩——5、三种数据:Excel也是系统

        Excel最常用的功能就是记录数据,把数据按照行列记录下来.这部分数据是源数据,是业务活动中最原始的流水账,作为后续操作的依据.为了从源数据中得出一定的结论,需要对源数据进行分析得出报表数据. ...

  7. .net之工作流工程展示及代码分享(三)数据存储引擎

    数据存储引擎是本项目里比较有特色的模块. 特色一,使用接口来对应不同的数据库.数据库可以是Oracle.Sqlserver.MogoDB.甚至是XML文件.采用接口进行对应: public inter ...

  8. JMeter中返回Json数据的处理方法

    Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...

  9. ASP.NET页面间数据传递的方法<转>

    ASP.NET页面间数据传递的方法 作者: 灰色的天空2  来源: 博客园  发布时间: 2010-10-28 11:06  阅读: 822 次  推荐: 0   原文链接   [收藏]   摘要:本 ...

随机推荐

  1. MapReduce源代码分析之LocatedFileStatusFetcher

    LocatedFileStatusFetcher是MapReduce中一个针对给定输入路径数组,使用配置的线程数目来获取数据块位置的有用类. 它的主要作用就是利用多线程技术.每一个线程相应一个任务.每 ...

  2. Strans 内表-xml文件

    一.内表到xml文件 <?sap.transform simple?> <tt:transform xmlns:tt="http://www.sap.com/transfo ...

  3. Python使用setuptools打包源文件(精简)

    目录结构: F:\capt>tree ├─abc_test │  ├─__init__.py │  ├─comman_line.py ├─setup.py #__init.py__ def he ...

  4. 代码空间项目 -- alert窗口自定义

    function z_alert(msg){    //创建提示框盒子,设置盒子的css样式    var msgBox=document.createElement("div") ...

  5. unity导出android项目

    1. 2 . 3 选择Google Android Project(若不选则直接导出Apk) Export,Android项目即可导出成功.

  6. java JDBM2 的几个简单实例

    JDBM2 提供了 HashMap 和 TreeMap 的磁盘存储功能,简单易用,用于持久化数据.特别适合用于嵌入到其他应用程序中. 磁盘数据库 HelloWorld.java import java ...

  7. codeforces776E

    传送门 这题看着很唬人,但实际上是道水题... f[n]通过打表或证明,可以发现就是欧拉函数,g[n]恒等于n,所以题目的意思就是让你求n的k次欧拉函数. 可以发现实际上k次欧拉函数,n的数值减小得很 ...

  8. Python视频教程

    Python这门语言相对学起来是简单点的,尤其对于测试人员来说,如果达到可以写自动化测试脚本的程度的话,学些基础就是可以的.那么在网上也是有很多资源的,各种培训的视频.作为一名过来人(哈哈),或者说是 ...

  9. Opencv— — Circle Filter

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  10. 【转载】rageagainstthecage.c源码以及注释

    如下: //头文件包含 #include <stdio.h> #include <sys/types.h> #include <sys/time.h> #inclu ...