如何将TensorFlow示例队列分成适当的批次进行训练?
我有一些图像和标签:
IMG_6642.JPG 1
IMG_6643.JPG 2
(随意建议其他标签格式;我想可能需要另外一个密集的步骤来简化步骤…)
我已经阅读了很多教程,但还没有完全结合在一起。这就是我所拥有的,带有注释的注释指示TensorFlow的“读取数据”页面所需的步骤。
1.文件名列表
files = tf.train.match_filenames_once('*.JPG')
4.文件名队列
filename_queue = tf.train.string_input_producer(files, num_epochs=None, shuffle=True, seed=None, shared_name=None, name=None)
5.读者
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
6.解码器
record_defaults = [[""], [1]]
col1, col2 = tf.decode_csv(value, record_defaults=record_defaults)
(我认为我不需要下面的步骤,因为我已经在张量中添加了标签,但是无论如何我都将其包括在内)
features = tf.pack([col2])
文档页面上有一个示例,用于运行一个图像,而不是批量获取图像和标签:
for i in range(1200):
# Retrieve a single instance:
example, label = sess.run([features, col5])
然后在它下面有一个批处理部分:
def read_my_file_format(filename_queue):
reader = tf.SomeReader()
key, record_string = reader.read(filename_queue)
example, label = tf.some_decoder(record_string)
processed_example = some_processing(example)
return processed_example, label
def input_pipeline(filenames, batch_size, num_epochs=None):
filename_queue = tf.train.string_input_producer(
filenames, num_epochs=num_epochs, shuffle=True)
example, label = read_my_file_format(filename_queue)
# min_after_dequeue defines how big a buffer we will randomly sample
# from -- bigger means better shuffling but slower start up and more
# memory used.
# capacity must be larger than min_after_dequeue and the amount larger
# determines the maximum we will prefetch. Recommendation:
# min_after_dequeue + (num_threads + a small safety margin) * batch_size
min_after_dequeue = 10000
capacity = min_after_dequeue + 3 * batch_size
example_batch, label_batch = tf.train.shuffle_batch(
[example, label], batch_size=batch_size, capacity=capacity,
min_after_dequeue=min_after_dequeue)
return example_batch, label_batch
我的问题是:如何将上面的示例代码与上面的代码一起使用? 我需要使用批处理,大多数教程已经附带了mnist批处理。
with tf.Session() as sess:
sess.run(init)
# Training cycle
for epoch in range(training_epochs):
total_batch = int(mnist.train.num_examples/batch_size)
# Loop over all batches
for i in range(total_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
如果您希望使该输入管道正常工作,则需要添加一个异步队列机制来生成大量示例。这是通过创建atf.RandomShuffleQueue或atf.FIFOQueue并插入已读取,解码和预处理的JPEG图像来执行的。
您可以使用方便的结构,这些结构将通过tf.train.shuffle_batch_join或生成队列和用于运行队列的相应线程tf.train.batch_join。这是一个简单的示例。请注意,此代码未经测试:
# Let's assume there is a Queue that maintains a list of all filenames
# called 'filename_queue'
_, file_buffer = reader.read(filename_queue)
# Decode the JPEG images
images = []
image = decode_jpeg(file_buffer)
# Generate batches of images of this size.
batch_size = 32
# Depends on the number of files and the training speed.
min_queue_examples = batch_size * 100
images_batch = tf.train.shuffle_batch_join(
image,
batch_size=batch_size,
capacity=min_queue_examples + 3 * batch_size,
min_after_dequeue=min_queue_examples)
# Run your network on this batch of images.
predictions = my_inference(images_batch)
根据您需要扩展工作的方式,您可能需要运行多个独立的线程来读取/解码/预处理图像并将其转储到示例队列中。Inception / ImageNet模型中提供了此类管道的完整示例。看一下batch_inputs:
https://github.com/tensorflow/models/blob/master/inception/inception/image_processing.py#L407
最后,如果要使用> O(1000)JPEG图像,请记住,单独准备1000个小文件的效率极低。这会大大减慢您的训练速度。
将图像数据集转换TFRecord为Example原型碎片的更强大,更快速的解决方案。这是一个完全有效的脚本,用于将ImageNet数据集转换为这种格式。这是一组说明,用于在包含JPEG图像的任意目录上运行此预处理脚本的通用版本。
我有一个包含数据(案例)记录的CSV文件,为此我创建了一个对象,但是的某些属性必须是文件名中包含的数据的字段(每个文件都必须有一个包含一些数据的严格结构的名称)。 我想要实现的是将文件名中包含的数据传递给项目处理器,在这里,我将在传递给项目编写器之前将该数据追加到每个中。 当我从控制器启动作业时,是否有人知道如何将数据传递给步骤? 提前道谢。
本文向大家介绍利用Tensorflow的队列多线程读取数据方式,包括了利用Tensorflow的队列多线程读取数据方式的使用技巧和注意事项,需要的朋友参考一下 在tensorflow中,有三种方式输入数据 1. 利用feed_dict送入numpy数组 2. 利用队列从文件中直接读取数据 3. 预加载数据 其中第一种方式很常用,在tensorflow的MNIST训练源码中可以看到,通过feed_d
我成功地将一个整数从处理发送到Arduino,但现在我想发送一个由三个整数组成的数组,但我无法让它工作。我想使用Arduino创建一个蜂鸣器反馈,哪个处理将控制激活哪个蜂鸣器。例如,从处理发送的数据应该是[1,0,1],这意味着传感器1和3应该开始工作。蜂鸣器应该能够同时激活,以防[1,1,1]通过。 这是我到目前为止的代码:我试图理解什么数据被发送回Arduino,以了解如何使用它,我不断得到一
问题内容: 我试图使用RNN(特别是LSTM)进行序列预测。但是,我遇到了序列长度可变的问题。例如, 我正在尝试使用一个基于此基准的简单RNN预测当前单词之后的下一个单词,以构建PTB LSTM模型 。 但是,该参数(用于展开到先前的隐藏状态)在每个Tensorflow的时期应保持相同。基本上,批处理句子是不可能的,因为句子的长度会有所不同。 在这里,对于我来说,每个句子都需要更改。我已经尝试了几
问题内容: 我在TensorFlow领域相对较新,对您如何 实际 将CSV数据读取到TensorFlow中可用的示例/标签张量中感到困惑。TensorFlow教程中有关读取CSV数据的示例相当分散,仅使您成为能够训练CSV数据的一部分。 这是我根据CSV教程整理而成的代码: 这是我正在加载的CSV文件中的一个简短示例-基本数据-4个功能列和1个标签列: 上面的所有代码都是 从CSV文件中逐个打印每
本文向大家介绍BAT批处理中使用数组示例,包括了BAT批处理中使用数组示例的使用技巧和注意事项,需要的朋友参考一下 批处理指令中并没有原生支持数组,但这不代表不能模拟出来。 来看下面的代码: 这样就定义了一个数组了,而且是结构体的数组。 在需要取值的时候,可以这么玩: 输出结果: 怎么样,很不错吧~~
我有一个应用程序,在这个应用程序中,我可以在进程的一部分中以JSON格式将消息写入Azure服务总线队列。我有一个下游进程,我想将该消息从队列中弹出,将json转换为一个对象,然后处理该对象。 我没有问题将消息推送到队列上,但我还没有找到任何将消息从队列中逐一或循环弹出的示例。我在微软或Github上看到的每一个例子都是一个控制台应用程序(在网络应用程序中毫无用处),它设置了某种侦听器,可以抓取队
有很多例子可以说明如何创建和使用TensorFlow数据集。 我的问题是如何以numpy格式从TF数据集获取数据/标签?换言之,WAND将是上面这行的反向操作,即我有一个TF数据集,并希望从中获取图像和标签。