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 ...
最新文章
- Ceph分层存储分析
- Leecode15. 三数之和——Leecode大厂热题100道系列
- matlab 旅行商遗传算法,急求蚁群混合遗传算法在matlab上的实现以解决TSP旅行商的问? 爱问知识人...
- Scrapy从理论到爬图
- Facebook隐私泄露事件继续发酵,黑客明码标价出售聊天信息
- 笔记:后端 - Redis
- spring循环依赖及解决方式_来探究一下Spring 循环依赖的三种方式
- Flink SQL CDC 上线!我们总结了 13 条生产实践经验
- Django学习总结①
- 极域电子教室软件怎么脱离控制_新疆灵感科技技术汇总~LED控制卡常见软、硬件问题...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_8_使用try_catch_finally处理流中的异常...
- 迷宫算法总结(总路径数、方法数)
- PAT a1125
- matlab中字体修改,matlab——修改图中字体
- android logo制作教程视频,Android的APP怎样制作LOGO的尺寸
- ISA-95第二部分-互操作性-B2MML用例
- 腾讯云 Debian11 bullseye 源
- qlineedit 获取文本_Python如何获取QLineEdit文本?
- Nuxt在SPA模式下的鉴权处理(1)
- Qt探索之旅(五)简单实现Mynotepad
热门文章
- 【珍爱生命,请写对拍】
- Google提供的垃圾服务:Apk 签名服务 Google Play App Signing 介绍
- 华为交换机vlan配置举例_华为交换机配置VLAN和VLANif
- 进项发票数据采集,进项发票明细数据采集导出
- 黑马旅游网完整代码_GitHub - mr-yhl/tianjin_travel: 黑马旅游网项目练习
- 便携式局部放电检测仪-介绍-厂家
- 搜索技术——盲目与启发
- DC/DC转换器PCB布局,第3部分
- Java序列化机制——protoStuff
- java protostuff 好处_Java 序列化框架性能对比(kryo、hessian、java、protostuff)