我的问题是如何从多个(或分片)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的批量输入?...相关推荐

  1. python管理技巧_8个经典的Python列表技巧,让你数据处理更简单!

    列表(List)是你使用Python过程中接触最为频繁的数据结构,也是功能最为强大的几种数据结构之一.Python列表非常的万能且蕴含着许多隐藏技巧,下面我们就来探索一些常用的列表技巧. 1 列表元素 ...

  2. 【Python自动化任务】让运维更简单的7种定时任务实现方式,总有一种适合你的场景

    想要看更加舒服的排版.更加准时的推送 关注公众号"不太灵光的程序员" 每日八点有干货推送 有粉丝留言问什么时候可以写一个关于自动化任务的文章 准备上!~ 感觉有用关注公众号 &qu ...

  3. 思考1:为什么大多数人喜欢做重复性工作,而不是思考用更简单的方法或者思考按自己的思路解决问题。

    我想大概有两个原因: 1. 高效. 别人都做好的东西,我为什么还要花时间去研究?直接拿来用多好.站在巨人的肩膀上,走的更快. 2. 懒于思考. 如:3个人堆积木,其中一个人提前了10分钟就开始堆了,所 ...

  4. python苦逼_自学Python编程的第六天(最后代码有更好的请告诉我)----------来自苦逼的转行人...

    2019-09-16-23:09:06 自学Python的第六天,也是写博客的第六天 今天学的内容是有关dict字典的用法 看视频加上练习,目前还没遇到有难点,但是感觉很不好的样子 没有难点以后突然出 ...

  5. VBA和Python双语对照,Excel编程学习更简单

    Excel VBA和Python双语对照学习 目录 第1章 Excel编程与Python编程概述 1 1.1 关于Excel脚本编程 1 1.1.1 为什么要进行Excel脚本编程 1 1.1.2 选 ...

  6. python 字符串格式化是打印不同类型更简单一些

    Python 支持格式化字符串的输出 与 C 中 sprintf 函数一样的语法 下面写3中不同类型的数据合在一起打印 name = "张三丰" height = 1.88 wei ...

  7. python实现魔方复原_大佬们帮忙看一下,python解三阶魔方有沒有更快的方法

    #导入easygui模块 import easygui as eg #得到每一面的颜色分布(里面说的图片在下面) b = eg.multenterbox("请按从上到下,从左到右的顺序输入中 ...

  8. python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)

    有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来听听效果,孤芳自赏提取高潮后的部分: 怎么样,是不是迫不及待想往 ...

  9. 更简单的方法实现el-calendar日历组件中点击上个月、今天、下个月按钮时的点击事件

    网上查el-calendar相关的按钮点击事件文章,清一色都是在mounted挂载阶段通过document.querySelector绑定类名添加点击事件. 我想说为啥要弄得这么麻烦?el-calen ...

最新文章

  1. Linux/CentOS优化配置 汇总
  2. MVC实现简单的上传功能
  3. linux显示父目录,linux – 仅列出文件的公共父目录
  4. insertAfter
  5. 都在建议你不要直接使用 @Async 注解,为什么?
  6. 计算机辅助教学 林筑英,视频教学制作技巧.doc
  7. 高效使用PC需要记住的快捷键
  8. SAP Business Application Studio 如何同 SAP BTP CloudFoundry 环境绑定
  9. 企业生产经营相关英文及缩写之(11)--Genenic 普通书写
  10. 计算机应用技术研究生开题报告,计算机应用技术专业论文开题报告.doc
  11. java 压缩加密 github_关于Java:使用github中的AES-256-CBC加密
  12. delve应该安装到哪_消防水炮安装高度为多少米标准
  13. SQL处理非常见空串
  14. 百胜erp加密狗驱动_百胜分销系统ERP_DRP用户手册.pdf
  15. html网页对账单样式,怎样在EXCEL中做工行对账单,样式字体要...
  16. 用PPT制作简易红蓝底一寸照
  17. mysql redo查看_mysql redo
  18. JSP 页面缓存以及清除缓存
  19. 浅夏,绿色延伸,就连邻家墙角的蔷薇也羞红了脸
  20. android animation

热门文章

  1. Python爬取网页所需内容+王者荣耀官网
  2. 从高中到大学 寻找真实的自己
  3. OpenCV中角点检测:Harris、Shi-Tomasi、亚像素级角点检测
  4. iOS 仿微信相册选择照片imagePicker(Swift) 序号 预览缩略图
  5. [翻译] NVIDIA HugeCTR,GPU 版本参数服务器 --(10)--- 推理架构
  6. English语法_序数词
  7. 有货移动端DevOps-自建APM系统
  8. AI艺术的基因工程?使用 #Artbreeder 改变图像的任意形态
  9. 快手爬票(爬取火车票信息)
  10. c语言 常量 指定地址,指定常量、变量、函数在存储空间的地址