python - Tensorflow:是否可以使用不同的火车输入大小和测试输入大小?

标签 python tensorflow

我是 Tensorflow 初学者,我正在尝试学习如何使用 Tensorflow。我知道我们可以构建一个网络模型并为网络创建一对输入和标签进行训练,即

inputs = tf.placeholder(tf.float32, [None, patch_size, patch_size, num_channels], name="inputs")
labels = tf.placeholder(tf.float32, [None, patch_size, patch_size, num_channels], name="labels")
network = build_network(inputs, ...)
optimizer = get_optimizer(labels, ...)
session.run(optimizer, {inputs: input_batch, labels: label_batch})
save.save(session, path)

在上述情况下,假设 patch_size 为 50 用于训练。

现在当我们尝试执行测试时,我们可以重新使用上面的一些代码来构建网络模型并运行测试。假设我将补丁大小设置为 180。如果我恢复检查点但指定不同的 patch_size 来构建网络模型,Tensorflow 如何处理?

patch_size=180
inputs = tf.placeholder(tf.float32, [None, patch_size, patch_size, num_channels], name="inputs")
labels = tf.placeholder(tf.float32, [None, patch_size, patch_size, num_channels], name="labels")
network = build_network(inputs, ...)
saver.restore(session, path)
prediction = session.run(network, {inputs:, input_batch})

据我所知,Tensorflow 可以接受不同的训练输入大小(批量大小 50)和测试输入大小(批量大小 180)。

  1. 那么当训练和测试输入大小不同时,Tensorflow 如何在内部解决这个问题以预测输出?

  2. 可以使用不同的输入尺寸吗?

  3. 使用不同的输入大小有什么优点或缺点吗?

最佳答案

  1. TensorFlow 不需要静态知道所有大小。如果大小是静态已知的,它可能有助于各种内部优化和检查,但通常这不是必需的。 Tensorflow 不会“预测”大小。给定特定输入(在 session.run() 中)它只运行操作。操作的内核可能需要一些大小是静态已知的,但也可以使用一些仅在运行时可用的大小。

  2. 一般来说,是的。如果你没有看到任何错误,你应该很好。此规则有一些异常(exception)情况,在这些情况下 TensorFlow 不会给您明确的错误,但它可能不会像您期望的那样。例如,如果您使用 static_rnn 但提供不同长度的输入,它们将用零填充并运行所有 RNN 步骤。这已记录在案,并且有一个 dynamic_rnn 变体,您可以在其中传递 sequence_length

  3. 一般来说,静态知道的东西越多,您可能获得的性能就越好,但这差异很大。我建议您首先默认使用对您来说最方便的设置。如果你觉得它应该快得多,你可以投资它来尝试使你的图形均匀化并指定尽可能多的大小。一般来说,TensorFlow 在形状推断方面做得很好。只要指定占位符大小,其余的一般都可以推断出来。如果需要,您可以通过查询某个中间张量的形状来检查这一点。

关于python - Tensorflow:是否可以使用不同的火车输入大小和测试输入大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746247/

相关文章:

python - WindowsPath 无法转换为 unicode

C++ 等效于 Python 属性

python - 从 Google Cloud Storage 中删除文件

python - 遍历元组列表的一个子集

python - 奇怪的 tf.Print 错误

python - 在 Tensorflow RNN 示例中从 id 获取单词

python - 在 pandas 的数据框中查找并链接值

python - 错误: TensorFlow: tf. 程序启动时必须调用enable_eager_execution

windows - Tensorflow:此平台不支持轮子

machine-learning - 在 tensorflow 嵌入注意力 seq2seq 中,projection_output 如何影响注意力向量大小