python records_python – Numpy到TFrecords:有没有更简单的方法来处理来自tfrecords的批量输入?...
我的问题是如何从多个(或分片)tfrecords获得批量输入.我已经阅读了示例https://github.com/tensorflow/models/blob/master/inception/inception/image_processing.py#L410.基本管道是,以训练集为例,(1)首先生成一系列tfrecords(例如,000-train-of-005,train-001-of-005 ,. ..),(2)从这些文件名中,生成一个列表并将它们输入到tf.train.string_input_producer中以获取队列,(3)同时生成一个tf.RandomShuffleQueue来做其他的事情,(4)使用tf.train .batch_join生成批输入.
我认为这很复杂,我不确定这个程序的逻辑.在我的情况下,我有一个.npy文件列表,我想生成分片的tfrecords(多个分离的tfrecords,而不只是一个单个大文件).这些.npy文件中的每一个都包含不同数量的正样本和负样本(2个类).一种基本方法是生成一个单个大型tfrecord文件.但文件太大(~20Gb).所以我采用分片的tfrecords.有没有更简单的方法来做到这一点?谢谢.
解决方法:
使用Dataset API简化整个过程.以下是两个部分:(1):将numpy数组转换为tfrecords和(2,3,4):读取tfrecords以生成批次.
1.从numpy数组创建tfrecords:
def npy_to_tfrecords(...):
# write records to a tfrecords file
writer = tf.python_io.TFRecordWriter(output_file)
# Loop through all the features you want to write
for ... :
let say X is of np.array([[...][...]])
let say y is of np.array[[0/1]]
# Feature contains a map of string to feature proto objects
feature = {}
feature['X'] = tf.train.Feature(float_list=tf.train.FloatList(value=X.flatten()))
feature['y'] = tf.train.Feature(int64_list=tf.train.Int64List(value=y))
# Construct the Example proto object
example = tf.train.Example(features=tf.train.Features(feature=feature))
# Serialize the example to a string
serialized = example.SerializeToString()
# write the serialized objec to the disk
writer.write(serialized)
writer.close()
2.使用Dataset API读取tfrecords(tensorflow> = 1.2):
# Creates a dataset that reads all of the examples from filenames.
filenames = ["file1.tfrecord", "file2.tfrecord", ..."fileN.tfrecord"]
dataset = tf.contrib.data.TFRecordDataset(filenames)
# for version 1.5 and above use tf.data.TFRecordDataset
# example proto decode
def _parse_function(example_proto):
keys_to_features = {'X':tf.FixedLenFeature((shape_of_npy_array), tf.float32),
'y': tf.FixedLenFeature((), tf.int64, default_value=0)}
parsed_features = tf.parse_single_example(example_proto, keys_to_features)
return parsed_features['X'], parsed_features['y']
# Parse the record into tensors.
dataset = dataset.map(_parse_function)
# Shuffle the dataset
dataset = dataset.shuffle(buffer_size=10000)
# Repeat the input indefinitly
dataset = dataset.repeat()
# Generate batches
dataset = dataset.batch(batch_size)
# Create a one-shot iterator
iterator = dataset.make_one_shot_iterator()
# Get batch X and y
X, y = iterator.get_next()
标签:python,tensorflow,tensorflow-datasets,tfrecord
来源: https://codeday.me/bug/20190917/1809981.html
python records_python – Numpy到TFrecords:有没有更简单的方法来处理来自tfrecords的批量输入?...相关推荐
- python管理技巧_8个经典的Python列表技巧,让你数据处理更简单!
列表(List)是你使用Python过程中接触最为频繁的数据结构,也是功能最为强大的几种数据结构之一.Python列表非常的万能且蕴含着许多隐藏技巧,下面我们就来探索一些常用的列表技巧. 1 列表元素 ...
- 【Python自动化任务】让运维更简单的7种定时任务实现方式,总有一种适合你的场景
想要看更加舒服的排版.更加准时的推送 关注公众号"不太灵光的程序员" 每日八点有干货推送 有粉丝留言问什么时候可以写一个关于自动化任务的文章 准备上!~ 感觉有用关注公众号 &qu ...
- 思考1:为什么大多数人喜欢做重复性工作,而不是思考用更简单的方法或者思考按自己的思路解决问题。
我想大概有两个原因: 1. 高效. 别人都做好的东西,我为什么还要花时间去研究?直接拿来用多好.站在巨人的肩膀上,走的更快. 2. 懒于思考. 如:3个人堆积木,其中一个人提前了10分钟就开始堆了,所 ...
- python苦逼_自学Python编程的第六天(最后代码有更好的请告诉我)----------来自苦逼的转行人...
2019-09-16-23:09:06 自学Python的第六天,也是写博客的第六天 今天学的内容是有关dict字典的用法 看视频加上练习,目前还没遇到有难点,但是感觉很不好的样子 没有难点以后突然出 ...
- VBA和Python双语对照,Excel编程学习更简单
Excel VBA和Python双语对照学习 目录 第1章 Excel编程与Python编程概述 1 1.1 关于Excel脚本编程 1 1.1.1 为什么要进行Excel脚本编程 1 1.1.2 选 ...
- python 字符串格式化是打印不同类型更简单一些
Python 支持格式化字符串的输出 与 C 中 sprintf 函数一样的语法 下面写3中不同类型的数据合在一起打印 name = "张三丰" height = 1.88 wei ...
- python实现魔方复原_大佬们帮忙看一下,python解三阶魔方有沒有更快的方法
#导入easygui模块 import easygui as eg #得到每一面的颜色分布(里面说的图片在下面) b = eg.multenterbox("请按从上到下,从左到右的顺序输入中 ...
- python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)
有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来听听效果,孤芳自赏提取高潮后的部分: 怎么样,是不是迫不及待想往 ...
- 更简单的方法实现el-calendar日历组件中点击上个月、今天、下个月按钮时的点击事件
网上查el-calendar相关的按钮点击事件文章,清一色都是在mounted挂载阶段通过document.querySelector绑定类名添加点击事件. 我想说为啥要弄得这么麻烦?el-calen ...
最新文章
- Linux/CentOS优化配置 汇总
- MVC实现简单的上传功能
- linux显示父目录,linux – 仅列出文件的公共父目录
- insertAfter
- 都在建议你不要直接使用 @Async 注解,为什么?
- 计算机辅助教学 林筑英,视频教学制作技巧.doc
- 高效使用PC需要记住的快捷键
- SAP Business Application Studio 如何同 SAP BTP CloudFoundry 环境绑定
- 企业生产经营相关英文及缩写之(11)--Genenic 普通书写
- 计算机应用技术研究生开题报告,计算机应用技术专业论文开题报告.doc
- java 压缩加密 github_关于Java:使用github中的AES-256-CBC加密
- delve应该安装到哪_消防水炮安装高度为多少米标准
- SQL处理非常见空串
- 百胜erp加密狗驱动_百胜分销系统ERP_DRP用户手册.pdf
- html网页对账单样式,怎样在EXCEL中做工行对账单,样式字体要...
- 用PPT制作简易红蓝底一寸照
- mysql redo查看_mysql redo
- JSP 页面缓存以及清除缓存
- 浅夏,绿色延伸,就连邻家墙角的蔷薇也羞红了脸
- android animation
热门文章
- Python爬取网页所需内容+王者荣耀官网
- 从高中到大学 寻找真实的自己
- OpenCV中角点检测:Harris、Shi-Tomasi、亚像素级角点检测
- iOS 仿微信相册选择照片imagePicker(Swift) 序号 预览缩略图
- [翻译] NVIDIA HugeCTR,GPU 版本参数服务器 --(10)--- 推理架构
- English语法_序数词
- 有货移动端DevOps-自建APM系统
- AI艺术的基因工程?使用 #Artbreeder 改变图像的任意形态
- 快手爬票(爬取火车票信息)
- c语言 常量 指定地址,指定常量、变量、函数在存储空间的地址