关于tf.train.batch和tf.train.string_input_producer的区别(输入流程简介)

本文详细解析了TensorFlow中数据集的构建过程,包括使用tf.train.string_input_producer进行图片地址管理,通过不同读取器读取数据,处理读取到的string类型值,图像增强操作如旋转、亮度调整,以及利用tf.train.batch或tf.train.shuffle_batch进行数据批处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面其实对输入tensorflow数据集的构造和输入那一块的认知比较模糊,所以抽了点时间解析了一下官方代码。

大概顺序如下:

1.输入所需图片的地址,然后放到tf.train.string_input_producer中进行管理,注意tf.train.string_input_producer中

只是图片的地址,不是图片的值。

2.然后用各种读取器读取地址中的数据(图片,标签),用的是

reader=tf.FixedLengthRecordReader(record_bytes=record_bytes),这是按字节来读的

还有

reader = tf.WholeFileReader()这是直接读完的

前者适用于一个文件中有很多组数据的,后者适用于一个文件一个数据组的

然后就是统一的流程:

result.key, value = reader.read(filename_queue)

从这里读出来的value其实数据形态是string类型的,因为trfrecord就是这么转换保存的,所以还要把读出来的数据进行一些处理(比如把label和image分开,然后转换成各自所需的数据类型)

record_bytes = tf.decode_raw(value, tf.uint8)

3.为了增强图像的稳健性,可以对图像进行一系列的操作,比如旋转,亮度,对比度,区域裁剪等操作。对了,一定要注意标准化,不然准确率上不去!!!!!

4.此时的图像都是tensor值得形式了,然后就是放入tf.train.batch或者tf.train.shuffle_batch(打乱)中进行管理,以便数据提取。也就是在这里才引入线程的

images, label_batch = tf.train.batch(
    [image, label],
    batch_size=batch_size,
    num_threads=num_preprocess_threads,#线程数
    capacity=min_queue_examples + 3 * batch_size)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值