gpt4 book ai didi

python - 从数据集 map() 函数调用中生成的图形操作添加 Tensorboard 摘要

转载 作者:太空狗 更新时间:2023-10-29 20:26:58 25 4
gpt4 key购买 nike

我发现 Dataset.map() 功能非常适合设置管道以在将图像/音频数据输入网络进行训练之前对其进行预处理,但我遇到的一个问题是在预处理之前访问原始数据以发送到张量板作为总结。

例如,假设我有一个函数可以加载音频数据、进行一些取景、制作频谱图并返回它。

import tensorflow as tf 

def load_audio_examples(label, path):
# loads audio, converts to spectorgram
pcm = ... # this is what I'd like to put into tf.summmary.audio() !
# creates one-hot encoded labels, etc
return labels, examples

# create dataset
training = tf.data.Dataset.from_tensor_slices((
tf.constant(labels),
tf.constant(paths)
))

training = training.map(load_audio_examples, num_parallel_calls=4)

# create ops for training
train_step = # ...
accuracy = # ...

# create iterator
iterator = training.repeat().make_one_shot_iterator()
next_element = iterator.get_next()

# ready session
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
train_writer = # ...

# iterator
test_iterator = testing.make_one_shot_iterator()
test_next_element = iterator.get_next()

# train loop
for i in range(100):
batch_ys, batch_xs, path = sess.run(next_element)
summary, train_acc, _ = sess.run([summaries, accuracy, train_step],
feed_dict={x: batch_xs, y: batch_ys})
train_writer.add_summary(summary, i)

看起来好像这并没有成为在 tensorboard 的“图表”选项卡中绘制的图表的一部分(请参见下面的屏幕截图)。

tesnrofboard

如您所见,它只是 X(预处理 map() 函数的输出)。

  1. 我如何更好地构建它以将原始音频放入 tf.summary.audio()?现在,在我的训练循环中,无法将 map() 中的内容作为张量访问。
  2. 另外,为什么我的图表没有显示在 Tensorboard 上?担心我将无法导出我的模型或使用 Tensorflow Serving 将我的模型投入生产,因为我正在使用新的数据集 API - 也许我应该回去手动做事? (有队列等)。

最佳答案

我认为您对 Dataset API 的使用没有多大意义。事实上,您有 2 个断开连接的子图。一个用于读取数据,另一个用于运行训练步骤。

batch_ys, batch_xs, path = sess.run(next_element)
summary, train_acc, _ = sess.run([summaries, accuracy, train_step],
feed_dict={x: batch_xs, y: batch_ys})

上面代码的第一行运行 session 并从中获取数据项。它将数据从 Tensorflow 后端传输到 Python。

下一行使用 feed_dict 提供数据,即 said to be inefficient .这次 TensorFlow 将数据从 Python 传输到运行时。

这有以下后果:

  1. 你的图表看起来不连贯
  2. TensorFlow 将时间浪费在与 Python 之间进行不必要的数据传输。

要拥有单个图(没有断开连接的子图),您需要在 Dataset API 返回的张量之上构建模型。请注意,无需手动获取批处理即可在训练和测试数据集之间切换(参见 Dataset guide)

如果谈论 map_fn 中定义的摘要,我相信您可以从 SUMMARIES 集合(摘要的默认集合)中检索摘要。添加汇总操作时也可以传入自己的集合名称。

关于python - 从数据集 map() 函数调用中生成的图形操作添加 Tensorboard 摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49483025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com