我的问题是如何从多个(或分片)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. Ceph分层存储分析
  2. Leecode15. 三数之和——Leecode大厂热题100道系列
  3. matlab 旅行商遗传算法,急求蚁群混合遗传算法在matlab上的实现以解决TSP旅行商的问? 爱问知识人...
  4. Scrapy从理论到爬图
  5. Facebook隐私泄露事件继续发酵,黑客明码标价出售聊天信息
  6. 笔记:后端 - Redis
  7. spring循环依赖及解决方式_来探究一下Spring 循环依赖的三种方式
  8. Flink SQL CDC 上线!我们总结了 13 条生产实践经验
  9. Django学习总结①
  10. 极域电子教室软件怎么脱离控制_新疆灵感科技技术汇总~LED控制卡常见软、硬件问题...
  11. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_8_使用try_catch_finally处理流中的异常...
  12. 迷宫算法总结(总路径数、方法数)
  13. PAT a1125
  14. matlab中字体修改,matlab——修改图中字体
  15. android logo制作教程视频,Android的APP怎样制作LOGO的尺寸
  16. ISA-95第二部分-互操作性-B2MML用例
  17. 腾讯云 Debian11 bullseye 源
  18. qlineedit 获取文本_Python如何获取QLineEdit文本?
  19. Nuxt在SPA模式下的鉴权处理(1)
  20. Qt探索之旅(五)简单实现Mynotepad

热门文章

  1. 【珍爱生命,请写对拍】
  2. Google提供的垃圾服务:Apk 签名服务 Google Play App Signing 介绍
  3. 华为交换机vlan配置举例_华为交换机配置VLAN和VLANif
  4. 进项发票数据采集,进项发票明细数据采集导出
  5. 黑马旅游网完整代码_GitHub - mr-yhl/tianjin_travel: 黑马旅游网项目练习
  6. 便携式局部放电检测仪-介绍-厂家
  7. 搜索技术——盲目与启发
  8. DC/DC转换器PCB布局,第3部分
  9. Java序列化机制——protoStuff
  10. java protostuff 好处_Java 序列化框架性能对比(kryo、hessian、java、protostuff)