【Tensorflow】io 操作

Python深度学习笔记02——线程队列与tensorflow的io操作(贰) 前言 一、文件读取 1、文件读取流程 2、文件读取基本知识 1)文件读取API-文件队列构造 2)文件读取API-文件阅读器 3)文件读取API-文件内容解码器 4)开启线程操作 5)管道读端批处理 3、案例实现 二、图片处理 1、图像基本知识 2、图像基本操作API 3、图片读取实例 总结 阅读详情

文章首发于微信公众号《有三AI》

【从caffe到Tensorflow 1】io 操作

最近项目要频繁用到tensorflow,所以不得不认真研究下tensorflow而不是跟之前一样遇到了就搞一下了。

首先我觉得所有这些框架里面caffe是最清晰的,所以就算是学习tensorflow,我也会以caffe的思路去学习,这就是这个系列的用意。

今天是第1篇,咱们说io操作,也就是文件读取,载入内存。

 

01 Caffe的io操作

caffe的io,是通过在prototxt中定义数据输入,默认支持data,imagedata,hdf5data,window data等类型。Datalayer,输入是LMDB数据格式,image data 支持的是imagelist的数据格式。

对于LMDB来说,我们在caffe layer中配置准备好的二进制数据即可。

对于image data,我们准备一个data list,官方的imagedata是一个分类任务的list,格式为每行image,label,当然随着任务的不同我们可以自定义。比如分割任务image,mask。检测任务,image num of object, objectrect1,object rect2等。

典型的格式是这样:

具体的载入,就是在相关层的DataLayerSetUp函数中设置好输入大小,load_batch函数中,读取原始数据,再利用data_transform塞入内存。

当然caffe也可以自定义python层使用,不过我还是更习惯c++,何况这里比较的也是官方自带的layer。

从上面我们可以看出,caffe的io都是从文件中载入,只是文件的组织方式不同。

Tensorflow的io输入则要复杂,全面很多,我们参考tensorflow1.5的API。

http://link.zhihu.com/?target=https%3A//

www.tensorflow.org/api_docs/python/tf/data

 

02 Tensorflow的io操作

Tensorflow不止是读取文件这一种方法,它可以包含以下几种方式。

  • 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)

import tensorflow as tf
# 设计Graph
x1 = tf.constant([2, 3, 4])
x2 = tf.constant([4, 0, 1])
y = tf.add(x1, x2)
with tf.Session() as sess:
  print sess.run(y)

如上,x1,x2都是预加载好的数据。在设计Graph的时候,x1和x2就已经被定义成了两个有值的列表,在计算y的时候直接取x1和x2的值。这种方法的问题是将数据直接内嵌到Graph中,再把Graph传入Session中运行。当数据量比较大时,Graph的传输会遇到效率问题。

  • Feeding 它定义变量的时候用占位符替代数据,待运行的时候填充数据。

import tensorflow as tf
x1 = tf.placeholder(tf.int16)
x2 = tf.placeholder(tf.int16)
y = tf.add(x1, x2)
# 用Python产生数据
li1 = [2, 3, 4]
li2 = [4, 0, 1]
# 打开一个session --> 喂数据 --> 计算y
with tf.Session() as sess:
  print sess.run(y, feed_dict={x1: li1, x2: li2})

定义的时候,x1, x2只是占位符所以没有具体的值,运行的时候使用sess.run()中的feed_dict参数,将Python产生的数据喂给后端,并计算y。

  • Reading From File

前两种方法很方便,但是遇到大型数据的时候就会很吃力,即使是Feeding,中间环节的增加也是不小的开销,比如数据类型转换等等。而且,面对复杂类型的数据,也是处理不过来的。因此与caffe一样,tensorflow也是支持从文件中读取数据。

下面举一个利用队列读取硬盘中的数据到内存的例子:假如需要读取的数据存在一个list中。这篇博客举了一个很好的例子;

http://honggang.io/2016/08/19/tensorflow-data-reading/

在上图中,首先由一个单线程把文件名堆入队列,两个Reader同时从队列中取文件名并读取数据,Decoder将读出的数据解码后堆入样本队列。

利用了string_input_producer + tf.TextLineReader() +train.start_queue_runners来读取数据,string_input_producer的定义在

https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/python/training/input.py

string_input_producer(
   string_tensor,
   num_epochs=None,
   shuffle=True,
   seed=None,
   capacity=32,
   shared_name=None,
   name=None,
   cancel_op=None
)

从上面可见,可以指定num_epochs,是否shuffle等,这就是一个最简单的从文件中读取的例子了。

假设有文件A.csv如下:

Alpha1,A1

Alpha2,A2

Alpha3,A3

单个reader读取单个数据脚本如下;

import tensorflow as tf
filenames = ['A.csv'] 必须要以数组的形式
filename_queue =tf.train.string_input_producer(filenames,shuffle=False)
reader = tf.TextLineReader()# 定义Reader
key, value = reader.read(filename_queue)
# 定义Decoder
example, label = tf.decode_csv(value,record_defaults=[['null'], ['null']])
# 运行Graph
with tf.Session() as sess:
  coord = tf.train.Coordinator()  #创建一个协调器,管理线程
  threads =tf.train.start_queue_runners(coord=coord)  #启动QueueRunner, 此时文件名队列已经进队。
  for i in range(10):
      print example.eval()   #取样本的时候,一个Reader先从文件名队列中取出文件名,读出数据,Decoder解析后进入样本队列。
  coord.request_stop()
  coord.join(threads)

讲了上面的基础例子之后,我们开始看更复杂的例子。

上面的例子包含两类,一种是从placeholder读内存中的数据,一种是使用queue读硬盘中的数据,而1.3以后的Dataset API同时支持从内存和硬盘的读取。

它们支持多种类型的输入,分别是FixedLengthRecordDataset, TextLineDataset,TFRecordDataset类型的。

TextLineDataset:这个函数的输入是一个文件的列表,输出是一个dataset。dataset中的每一个元素就对应了文件中的一行。可以使用这个函数来读入CSV文件,跟上面例子类似。

TFRecordDataset:这个函数是用来读TFRecord文件的,dataset中的每一个元素就是一个TFExample,这是很常用的。

FixedLengthRecordDataset:这个函数的输入是一个文件的列表和一个record_bytes,之后dataset的每一个元素就是文件中固定字节数record_bytes的内容。通常用来读取以二进制形式保存的文件,如CIFAR10数据集就是这种形式。

迭代器:提供了一种一次获取一个数据集元素的方法。

所有定义都在tensorflow/python/data/ops/readers.py中。

参考文章

https://zhuanlan.zhihu.com/p/30751039

我们先理解一下dataset是什么?

Dataset可以看作是相同类型“元素”的有序列表,而单个“元素”可以是向量,也可以是字符串、图片,甚至是tuple或者dict。先以最简单的,Dataset的每一个元素是一个数字为例:


import tensorflow as tf
import numpy as np
dataset =tf.data.Dataset.from_tensor_slices(np.array([1.0, 2.0,3.0, 4.0, 5.0]))

这样,我们就创建了一个dataset,这个dataset中含有5个元素,分别是1.0, 2.0, 3.0, 4.0, 5.0。

如何将这个dataset中的元素取出呢?方法是从Dataset中示例化一个Iterator,然后对Iterator进行迭代。

iterator = dataset.make_one_shot_iterator()
one_element = iterator.get_next()
with tf.Session() as sess:
for i in range(5):
      print(sess.run(one_element))

对应的输出结果应该就是从1.0到5.0。语句iterator =dataset.make_one_shot_iterator()从dataset中实例化了一个Iterator,这个Iterator是一个“one shot iterator”,即只能从头到尾读取一次。one_element =iterator.get_next()表示从iterator里取出一个元素,调用sess.run(one_element)后,才能真正地取出一个值。

如果一个dataset中元素被读取完了,再尝试sess.run(one_element)的话,就会抛出tf.errors.OutOfRangeError异常,这个行为与使用队列方式读取数据的行为是一致的。在实际程序中,可以在外界捕捉这个异常以判断数据是否读取完,请参考下面的代码:

dataset =tf.data.Dataset.from_tensor_slices(np.array([1.0, 2.0,3.0, 4.0, 5.0]))
iterator = dataset.make_one_shot_iterator()
one_element = iterator.get_next()
with tf.Session() as sess:
try:
while True:
          print(sess.run(one_element))
except tf.errors.OutOfRangeError:
      print("end!")

dataset还可以有一些基本的数据变换操作,即transform操作,常见的有map,batch,shuffle,repeat

把数据+1dataset = dataset.map(lambda x: x + 1)

组合成batch,dataset = dataset.batch(32)

进行shuffle,dataset = dataset.shuffle(buffer_size=10000)

repeat 组成多个epoch,dataset = dataset.repeat(5)

 

03 来一个实例

理解了dataset之后,我们再看如何从文件中读取数据。由于tfrecord是非常常用的格式,下面我们就以这个为例。

假如我们有两个文件夹,一个是整理好的固定大小的图片,一个是对应label图片,这是一个分割任务,下面我们开始做。

  • 处理成tfrecord格式

首先,我们要把数据处理成tfrecord格式。

我们先定义一下存储格式:

直接贴完整代码了

import tensorflow as tf
import os
import sys

def _bytes_feature(value):
  returntf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

def _convert_to_example(image_buffer, mask_buffer,filename, mask_filename):
  example =tf.train.Example(features=tf.train.Features(feature={
      'image': _bytes_feature(image_buffer),
      'mask': _bytes_feature(mask_buffer),
      "filename":_bytes_feature(bytes(filename.encode("UTF-8"))),
      "mask_filename":_bytes_feature(bytes(mask_filename.encode("UTF-8")))
      #"filename": _bytes_feature(bytes(filename,encoding="UTF-8")),
      #"mask_filename":_bytes_feature(bytes(mask_filename,encoding="UTF-8"))
  }))
  return example

files = os.listdir(sys.argv[1])
mask_dir = sys.argv[2]
writer = tf.python_io.TFRecordWriter(sys.argv[3])
for file in files:
 filename = file
 mask_filename =os.path.join(mask_dir,filename.split('.')[0] + ".png")
 filename = os.path.join(sys.argv[1],filename)
 try:
    image_buffer = tf.gfile.FastGFile(filename,'rb').read()
    mask_buffer = tf.gfile.FastGFile(mask_filename,'rb').read()

    print "filename=",filename
    example = _convert_to_example(image_buffer,mask_buffer, filename, mask_filename)
    writer.write(example.SerializeToString())

 except StopIteration as e:
    print "error"

_convert_to_example这个函数,就是定义存储的格式;tf.gfile.FastGFile就是读取图片原始文件格式且不编解码,writer = tf.python_io.TFRecordWriter(sys.argv[3])是定义writer,写起来其实挺简单。

tf.train.Example是一个protocol buffer,定义在

https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/core/example/example.proto

将数据填入到Example后就可以序列化为一个字符串。一个Example中包含Features,Features里包含Feature,每一个feature其实就是一个字典,如上面的一个字典包含4个字段。

  • 读取tf.records

读取数据就可以使用tf.TFRecordReader的tf.parse_single_example解析器。它将Example protocolbuffer解析为张量。

简单的利用队列读取,可以采用下面的方法

filename_queue =tf.train.string_input_producer([filename])
reader = tf.TFRecordReader()
  _, serialized_example =reader.read(filename_queue)   #返回文件名和文件
  features =tf.parse_single_example(serialized_example,
      features={'label': tf.FixedLenFeature([], tf.int64),
                ‘img_raw' : tf.FixedLenFeature([],tf.string),})
img = tf.decode_raw(features['image'], tf.uint8)
label = tf.decode_raw(features['mask'], tf.uint8)

不过,我们这里利用新的API的dataset来读取,更加高效。直接贴上代码如下:

上面定义过_convert_to_example,我们这里先定义一个读取格式。

def _extract_features(example):
  features = {
      "image": tf.FixedLenFeature((), tf.string),
      "mask": tf.FixedLenFeature((), tf.string)
}

获取一个example
parsed_example = tf.parse_single_example(example,features)
得到原始图并转换格式,set_shape是必须的,因为没有存储尺寸信息。

  images =tf.cast(tf.image.decode_jpeg(parsed_example["image"]), dtype=tf.float32)
  images.set_shape([224, 224, 3])
  masks =tf.cast(tf.image.decode_jpeg(parsed_example["mask"]), dtype=tf.float32) / 255.
  masks.set_shape([224, 224, 1])
  return images, masks

下面这个函数就是create迭代器了,在这里我们使用最简单的iterator,one-shot iterator来迭代,当然它只支持在一个dataset上迭代一次,不需要显式初始化。这里不需要怀疑epoch的问题,因为dataset.repeat(num_epoch)就会设置epoch数目,所以虽然只在dataset上迭代一次,但是已经遍历过数据epoch次。

def create_one_shot_iterator(filenames, batch_size,num_epoch):
  dataset = tf.data.TFRecordDataset(filenames)
  dataset = dataset.map(_extract_features)
  dataset = dataset.shuffle(buffer_size=batch_size)
  dataset = dataset.batch(batch_size)
  dataset = dataset.repeat(num_epoch)
return dataset.make_one_shot_iterator()

用的时候,就是

train_iterator = create_one_shot_iterator(train_files,train_batch_size, num_epoch=num_epochs)
next_images, next_masks = train_iterator.get_next()

当然读取出来之后可以做一些数据增强的操作。

就这样完毕!

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI!

 

9 | Tensorflow io流和 tfrecord读取操作 tf.io模块是 TensorFlow 中用于处理输入输出(I/O)操作的工具模块,提供了许多常见的函数,用于读写文件、处理图像、序列化和反序列化数据等。以下是一些常见的tf.io这些函数提供了在 TensorFlow 中进行常见 I/O 操作所需的工具。具体的使用方式可以根据你的任务和数据类型进行调整。 阅读详情

相关推荐

统信UOS Linux操作系统下安装TensorFlow遇到的tensorflow-io-gcs-filesystem问题

由于笔者统信UOS机器没有使用tensorflow-io-gcs-filesystem运行环境,但安装TensorFlow却自动安装了tensorflow-io-gcs-filesystem,导致import tensorflow时加载tensorflow_io失败报错,解决办法就是执行pip3 uninstall tensorflow-io-gcs-filesystem卸载tensorflow-io-gcs-filesystem即可。

老猿Python 982

机器学习——TensorflowIO操作-6

文章目录Tensorflow与深度学习线程队列与IO操作在计算争分夺秒的时候,需要去提高IO读取的速度?队列和线程Tensorflow队列tf.FIFOQueue完成一个出队列、+1、入队列操作(同步操作)入队列需要注意队列管理器线程协调器文件读取文件读取流程2![在这里插入图片描述](https://img-blog.csdnimg.cn/63c207339d454091ae27985f8ba449f5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5z

lidashent的博客 386

由TensorFlow SIG-IO维护的数据集,流传输和文件系统扩展-C/C++开发

TensorFlow I / O TensorFlow I / O是文件系统和文件格式的集合,这些文件系统和文件格式在TensorFlow的内置支持中不可用。 目前,TensorFlow I / O支持以下数据源:tensorflow TensorFlow I / O TensorFlow I / O是文件系统和文件格式的集合,这些文件系统和文件格式在TensorFlow的内置支持中不可用。 可在此处找到TensorFlow I / O支持的文件系统和文件格式的完整列表。 在keras中使用tensorflow-io很简单。 以下是TensorFlow入门示例,其中数据处理已替换为tensorflow-io:将tensorflow导入为tf导入tensorflow_io为tfio#将MNIST读入数据集d_train = tfio.IODataset.from_

Tensorflow数据IO的三种方式

Tensorflow数据IO的三种方式: 数据直接嵌入graph,由graph传入session中运行 ——> constsnt 用placeholder占位符代替数据,运行时用feed_dict填入数据 ——> graph程序copy到不同机器,数据在local读(一个session只能执行一个graph,一个graph可以传输给多个session) Pipeline:用Queue机制异步的方式(生产者消费者模式)实现数据IO ——> tf.TextLinereader()每次读一行

公众号:瑞行AI 1269

Python库 | tensorflow_io-0.23.0-cp39-cp39-win_amd64.whl

python库。 资源全名:tensorflow_io-0.23.0-cp39-cp39-win_amd64.whl

从JX-2R-01热敏打印机芯到稳定打印:硬件设计与时序控制的实践指南

本文详细解析了JX-2R-01热敏打印机芯的硬件设计与驱动开发全流程。核心内容包括:实现严格的双电源上电时序控制、采用PWM恒流驱动步进电机确保走纸平稳,以及精确控制SPI数据加载与加热脉冲时序以获得清晰打印效果。文章提供了从电路设计、芯片选型到代码调试的实战指南,旨在帮助开发者构建稳定可靠的热敏打印模块。

weixin_29169899的博客 223

TensorFlow-IO中文件系统接口详解

tensorflow-IO提供了丰富的对接文件系统的接口,本文从源代码出发分析tensorflow-IO的文件系统的相关接口,学习如何为这些以C编写的文件系统提供Python接口。

wwwakdf的博客 460

Oracle-如何修复undo坏快

undo出现坏快,导致数据库宕机,无法启动

qqqyyy0422的博客 570

TensorFlow I/O 项目常见问题解决方案

TensorFlow I/O 项目常见问题解决方案 项目基础介绍 TensorFlow I/O 是一个由 TensorFlow SIG-IO 维护的扩展库,主要用于提供 TensorFlow 内置支持中未包含的文件系统和文件格式。该项目的主要编程语言是 Python,并且它与 TensorFlow 深度集成,使得数据处理和文件操作更加便捷。 新手使用注意事项及解决方案 1. 安装问题 问题描述:新...

gitblog_01070的博客 577

从FrSky到TBS:深度解析航模2.4G遥控协议江湖史(附ELRS高频头改装指南)

本文深度解析了航模2.4G遥控协议的技术演进史,从FrSky ACCST的兴衰到TBS Crossfire的崛起,再到开源协议ExpressLRS的革命性突破。文章不仅对比了各协议在延迟、距离与抗干扰能力上的技术内核,还提供了为多协议遥控器加装TBS Crossfire高频头的实战改装指南,帮助玩家打通协议壁垒,提升飞行体验。

weixin_29193259的博客 738

Android 导出aar 用于Unity 百度语音唤醒

AndroidStudio版本下载地址Android Studio Arctic Fox Unity版本2021.3.26f1c1 新建AndroidStudio工程 新建module 这里注意一下,网上很多教程说要注意包名要和unity一样,但是测试下来,不一样也可以的 在新建的module里添加这两个jar包,并点击右键add as library 导入jniLibs 右键创建这几个package 代码就安装这个大佬的写参考代码 需要注意的的是在WakeupListener脚本里U

weixin_38777563的博客 633

TensorFlow框架-tensorflow IO流程

tensorflow IO流程一、队列1、队列与队列管理器(1)队列(2)队列管理器二、文件读取1、文件读取流程2、文件读取API(1)文件队列构造(2)文件阅读器(3)文件内容解码器三、图片处理1、图像基本知识2、图像读取API3、 TFRecords分析、存取(1)TFRecords存储(2)TFRecords读取方法(3)Cart-10数据批处理结果存入tfrecords流程(4)读取tfr...

u014168855的博客 930

restbed编译笔记

Restbed 可以构建出基于asio库的restfulAPI服务,Restbed 4.7版本使用了1.12.0版本的asio(其他版本编译不通过),可直接访问github下载:https://github.com/chriskohlhoff/asio/tree/asio-1-12-0。另外Restbed还依赖openssl库(可直接下载exe的安装包,安装后取出lib库及头文件放到到restbed\dependency\openssl中即可,https://slproweb.com/download/W.

mahong100的博客 2107

【从caffe到Tensorflow 1】io 操作

最近项目要频繁用到tensorflow,所以不得不认真研究下tensorflow而不是跟之前一样遇到了就搞一下了。首先我觉得所有这些框架里面caffe是最清晰的,所以就算...

hacker_long的专栏 478

推荐11个顶级的Claude Code Skills

ClaudeCode的Skills系统为程序员提供了11个强大的AI辅助工具,包括代码审查、重构建议、单元测试生成、API文档自动生成、性能分析、安全扫描、数据库迁移脚本生成、CI/CD配置、依赖管理、ER图生成和日志分析等功能。这些"技能包"可大幅提升开发效率,从代码质量到协作沟通全方位优化工作流程。用户可根据需求选择2-3个核心功能开始尝试,熟练后还可自定义Skills。该系统需要配合Anthropic的API使用,建议先在小型项目测试再应用于核心业务。

分享AI、区块链技术及应用,未来已来 1855

DeepSeek + 微信:手把手教你把 AI 接入个人微信,秒变“高情商”聊天助手(防封指南)

将 DeepSeek 接入微信,本质上是给你的微信装了一个**“最强外挂”**。它不仅能帮你回消息,还能帮你写周报、查资料、甚至陪聊解闷。工具是服务于人的,不要让 AI 完全替代了你的真情实感。毕竟,真正的高情商,是屏幕背后那个在乎对方的你。先申请一个小号,按照步骤跑通流程。然后试着调整 Prompt,训练一个属于你自己的“嘴替”吧!

BUG猿的博客 964

Python深度学习笔记01——线程队列与tensorflow的io操作(壹)

文章目录 一、tensorflow与io操作 二、tensorflow队列 1、参数 方法 2、案例实现 三、队列管理器与线程协调器实现异步读取训练 1、队列管理器 2、异步操作 3、线程协调器 总结

Liii_NN的博客 540

pi-coding-agent 完整详解

pi-coding-agent是一个由Mario Zechner开发的专业AI编程助手,基于Node.js和TypeScript构建。核心功能包括:1)多级思考模式(ThinkingLevel),从none到ultra控制推理深度;2)对话压缩(compaction)管理长对话记忆;3)WebSocket实时通信支持流式交互。该智能体支持代码生成、调试、重构等专业编程任务,采用AI Agent架构,具备工具调用和多轮记忆能力。项目结构通常包含server、agent、config等模块,可通过二次开发扩展功

大坡3D软件开发 2438

Tensorflow |(6)Tensorflow的IO操作

Tensorflow |(1)初识Tensorflow Tensorflow |(2)张量的阶和数据类型及张量操作 Tensorflow |(3)变量的的创建、初始化、保存和加载 Tensorflow |(4)名称域、图 和会话 Tensorflow |(5)模型保存与恢复、自定义命令行参数 读取数据 小数量数据读取 这仅用于可以完全加载到存储器中的小的数据集有两种方法: 存...

DrugOne 1724

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TensorFlow数据IO操作

占位符 & feed_dict搭配使用 QueueRunner 通用文件读取流程 图片、二进制数据、TFRecords 一、文件读取流程 多线程 + 队列 1)构造文件名队列 file_queue = tf.train.string_input_producer(string_tensor,shuffle = True) # string_tensor: 含有文件名+路径的一阶张量,一般传入一个列表 # shuffle:...

lemon_kirito的博客 533

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Tensorflow】文件IO操作

1.队列和线程 2.文件读取 2.1文件读取流程 构造一个队列 读取队列内容-read csv文件-默认读取一行 二进制文件-指定一个样本的bytes读取 图片文件-一张一张的读取 对内容进行解码 批处理 一次读取多个样本.主线程主要用来训练,子线程主要用来读取 就是说我们设置一个阈值为50,只要主线程读取够50个样本,我们就拿去进行训练. 2.2.文件读取API 构造文件队列 Q...

gecko 247

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Tensorflow线程队列与IO操作

目录 Tensorflow线程队列与IO操作 1 线程和队列 1.1 前言 1.2队列 1.3队列管理器 1.4线程协调器 2 文件读取 2.1 流程 2.2 文件读取API: 3图像读取 3.1 图像读取基本知识 3.2图像基本操作 3.3 图像读取API 3.4图片批处理流程 3.5 读取图片案...

fighting 721

Tensorflow:顺序队列与IO操作

顺序队列与IO操作 CPU负责TensorFlow的计算,IO负责读取文件 由于速度上的差异,通常做法是:主线程进行模型训练,子线程读取数据,二者通过队列进行数据传输 相当于主线程从队列读数据,子进程往队列放数据 线程与队列 在使用TensorFlow进行异步计算时,队列是一种强大的机制。 一个简单的例子。先创建一个“先入先出”的队列(FIFOQueue),并将其内部所有元素初始化为零。然后,构建...

qq_45315982的博客 259

Python_ML-Day05: TensorFlow的线程队列与IO操作、TFRecords文件的存取

Python_ML-Day5: TensorFlow的线程队列与IO操作、TFRecords文件的存取 1.TensorFlow 队列 - 在训练样本的时候,希望读入的训练样本是有序的 - 考虑使用队列机制: 先进先出 - tf.FIFOQueue(capacity, dtypes, name='fifo_queue') 1.先进先出队列 ...

xcvbxv01的博客 319

tensorflow框架——数据IO操作(一)

数据IO操作: 三种文件读取方法: 通用文件读取流程(图片、二进制数据、TFRecords) 占位符&feed_dict搭配使用 QueueRunner(多线程+队列): 1.文件读取流程: 构造文件名队列 file_queue=tf.train.string.input_producer(string_tensor,shufile=True) 读取与解码 tf.TextLineReader() //文本读取 tf.decode_csv() ...

Retarded78_的博客 262

TensorFlow框架——数据IO操作(二)

二进制数据: 1、CIFAR10二进制数据集介绍: 每3073个字节是一个样本 1个目标值+3072像素(1024字节红色通道 1024字节绿色通道 1024字节蓝色通道) 2、CIFAR10 二进制数据读取 流程: 1)构造文件名队列 2)读取与解码 #读取 reader=tf.FixedLengthRecordReader(3073) key,value=reader.re...

Retarded78_的博客 201
上一篇: 【技术综述】深度学习中的数据增强(下)
下一篇: 【技术综述】深度学习自动构图研究报告
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值