使用tensorflow DataSet实现高效加载变长文本输入


Posted in Python onJanuary 20, 2020

DataSet是tensorflow 1.3版本推出的一个high-level的api,在1.3版本还只是处于测试阶段,1.4版本已经正式推出。

在网上搜了一遍,发现关于使用DataSet加载文本的资料比较少,官方举的例子只是csv格式的,要求csv文件中所有样本必须具有相同的维度,也就是padding必须在写入csv文件之前做掉,这会增加文件的大小。

经过一番折腾试验,这里给出一个DataSet+TFRecords加载变长样本的范例。

首先先把变长的数据写入到TFRecords文件:

def writedata():
 xlist = [[1,2,3],[4,5,6,8]]
 ylist = [1,2]
 #这里的数据只是举个例子来说明样本的文本长度不一样,第一个样本3个词标签1,第二个样本4个词标签2
 writer = tf.python_io.TFRecordWriter("train.tfrecords")
 for i in range(2):
  x = xlist[i]
  y = ylist[i]
  example = tf.train.Example(features=tf.train.Features(feature={
   "y": tf.train.Feature(int64_list=tf.train.Int64List(value=[y])),
   'x': tf.train.Feature(int64_list=tf.train.Int64List(value=x))
  }))
  writer.write(example.SerializeToString())
 writer.close()

然后用DataSet加载:

feature_names = ['x']
 
def my_input_fn(file_path, perform_shuffle=False, repeat_count=1):
 def parse(example_proto):
  features = {"x": tf.VarLenFeature(tf.int64),
    "y": tf.FixedLenFeature([1], tf.int64)}
  parsed_features = tf.parse_single_example(example_proto, features)
  x = tf.sparse_tensor_to_dense(parsed_features["x"])
  x = tf.cast(x, tf.int32)
  x = dict(zip(feature_names, [x]))
  y = tf.cast(parsed_features["y"], tf.int32)
  return x, y
 
 dataset = (tf.contrib.data.TFRecordDataset(file_path)
    .map(parse))
 if perform_shuffle:
  dataset = dataset.shuffle(buffer_size=256)
 dataset = dataset.repeat(repeat_count)
 dataset = dataset.padded_batch(2, padded_shapes=({'x':[6]},[1])) #batch size为2,并且x按maxlen=6来做padding
 iterator = dataset.make_one_shot_iterator()
 batch_features, batch_labels = iterator.get_next()
 return batch_features, batch_labels
 
next_batch = my_input_fn('train.tfrecords', True)
init = tf.initialize_all_variables()
with tf.Session() as sess:
 sess.run(init)
 for i in range(1):
  xs, y =sess.run(next_batch)
  print(xs['x'])
  print(y)

注意变长的数据TFRecords解析要用VarLenFeature,然后用sparse_tensor_to_dense转换。

以上这篇使用tensorflow DataSet实现高效加载变长文本输入就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python序列之list和tuple常用方法以及注意事项
Jan 09 Python
Python异常学习笔记
Feb 03 Python
python如何定义带参数的装饰器
Mar 20 Python
python实现对csv文件的列的内容读取
Jul 04 Python
Python中按值来获取指定的键
Mar 04 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
Python读取表格类型文件代码实例
Feb 17 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
python机器学习库xgboost的使用
Jan 20 #Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 #Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 #Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 #Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 #Python
基于Python获取照片的GPS位置信息
Jan 20 #Python
如何基于pythonnet调用halcon脚本
Jan 20 #Python
You might like
PHP 数组入门教程小结
2009/05/20 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
node.js中的require使用详解
2014/12/15 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
python一键去抖音视频水印工具
2018/09/14 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python实现电子词典
2020/03/03 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
性能测试工程师的面试题
2015/02/20 面试题
学术会议邀请函范文
2014/01/22 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
地雷战观后感
2015/06/09 职场文书
安全生产会议制度
2015/08/06 职场文书
团组织关系介绍信
2019/06/24 职场文书