如何查看tf.train.batch()的输出

wgharbieh

我一直在关注wildml上“ TensorFlow中的RNN,实用指南和未记录的功能”一文,但无法查看该tf.train.batch()函数的输出用于存储,加载和处理输入的代码如下:

sequences = [[1, 2, 3], [4, 5, 1], [1, 2]]
label_sequences = [[0, 1, 0], [1, 0, 0], [1, 1]]

def make_example(sequence, labels):
    # The object we return
    ex = tf.train.SequenceExample()
    # A non-sequential feature of our example
    sequence_length = len(sequence)
    ex.context.feature["length"].int64_list.value.append(sequence_length)
    # Feature lists for the two sequential features of our example
    fl_tokens = ex.feature_lists.feature_list["tokens"]
    fl_labels = ex.feature_lists.feature_list["labels"]
    for token, label in zip(sequence, labels):
        fl_tokens.feature.add().int64_list.value.append(token)
        fl_labels.feature.add().int64_list.value.append(label)
    return ex
fname = "/home/someUser/PycharmProjects/someTensors"
writer = tf.python_io.TFRecordWriter(fname)
for sequence, label_sequence in zip(sequences, label_sequences):
    ex = make_example(sequence, label_sequence)
    print ex
    writer.write(ex.SerializeToString())
writer.close()
print("Wrote to {}".format(fname))
reader = tf.TFRecordReader()
filename_queue = tf.train.string_input_producer([fname])
_, serialized_example = reader.read(filename_queue)
context_parsed, sequence_parsed = tf.parse_single_sequence_example(
serialized=serialized_example, context_features=context_features,
sequence_features=sequence_features)

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
tf.train.start_queue_runners(sess=sess)

batched_data = tf.train.batch(tensors=
[context_parsed['length'], sequence_parsed['tokens'],     
sequence_parsed['labels']], batch_size=5, dynamic_pad= True)

batched_context_data = tf.train.batch(tensors= [context_parsed['length']],
batch_size=5, dynamic_pad= True)

batched_tokens_data = tf.train.batch(tensors=
[sequence_parsed['tokens']], batch_size=5, dynamic_pad= True)

batched_labels_data = tf.train.batch(tensors=
[sequence_parsed['labels']], batch_size=5, dynamic_pad= True)

根据帖子,应该可以如下查看批次的输出:

res = tf.contrib.learn.run_n({"y": batched_data}, n=1, feed_dict=None)
print("Batch shape: {}".format(res[0]["y"].shape))
print(res[0]["y"])

或更具体的情况如下:

res = tf.contrib.learn.run_n({"y": batched_context_data}, n=1, feed_dict=None)
print("Batch shape: {}".format(res[0]["y"].shape))
print(res[0]["y"])

不幸的是,TensorFlow花费了很多时间来计算这两种情况,因此我最终取消了该过程。有人可以告诉我我在做什么错吗?

非常感谢你!

ry

我怀疑问题在于此行,其调用为tf.train.start_queue_runners()

tf.train.start_queue_runners(sess=sess)

...出现在这些行之前,其中包含对的调用tf.train.batch()

batched_data = tf.train.batch(...)

batched_context_data = tf.train.batch(...)

batched_tokens_data = tf.train.batch(...)

batched_labels_data = tf.train.batch(...)

如果在调用tf.train.start_queue_runners() 之后将调用移至tf.train.batch(),则您的程序应该不再死锁。


为什么会这样?tf.train.batch()函数在内部创建队列以在批处理数据时缓冲数据,在TensorFlow中,填充这些队列的常用方法是创建“队列运行器”,该队列运行器通常是将元素移入队列的后台线程。tf.train.start_queue_runners()函数调用时为所有注册的队列运行器启动后台线程,但是如果在创建队列运行器之前调用了该线程,则不会启动这些线程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 tf.train.range_input_producer() 对 tf.train.shuffle_batch() 的输出进行切片?

tf.train.shuffle_batch如何工作?

tf.train.shuffle_batch_join和tf.train.shuffle_batch之间的区别

tf.train.shuffle_batch和`tf.train.batch是怎么回事?

如何使用tf.train.shuffle_batch构建用于训练和推理的TF图?

如何查看Google Colab生成的train_on_batch张量板日志文件?

如何使用带有enqueue_many = true的tf.train.batch

tf.train.shuffle_batch不适合我

tf.train.batch-从dequeue_many操作获取项目

tf.train.shuffle_batch 似乎不会产生随机图像

使用tf.train.batch时形状错误

在`tf.train.MonitoredTrainingSession`期间输出批次/时期训练损失

TensorFlow:dataset.train.next_batch如何定义?

将不同形状的 Tensor 对象传递给 tf.train.batch

`tf.train.shuffle_batch` 在 TensorFlow 中读取 `TFRecord` 文件时崩溃

tf.train.batch中的错误-FIFOQueue已关闭且元素不足

Tensorflow train.batch问题

在tensorflow / keras中,为什么在使用predict_on_batch训练后重新计算train_on_batch的输出损失不同?

keras:如何通过model.train_on_batch()使用学习率衰减

如何在 keras 中使用带有“train_on_batch”的“reduceLROnplateau”回调方法

我们如何使用train_on_batch进行早停?

TensorFlow:当批次完成训练后,tf.train.batch是否会自动加载下一个批次?

TensorFlow如何计算tf.train.GradientDescentOptimizer的梯度?

“ tf.train.replica_device_setter”如何工作?

如何将tf.train.Saver()子类化?

如何在 SessionRunHook 中使用 tf.train.Saver?

如何使用tf.train.MonitoredTrainingSession仅还原某些变量

使用tf.train.MonitoredTrainingSession时如何获取全局步

如何配置tensorflow legacy / train.py model.cpk输出间隔