2016-12-08 56 views
0

我已经训练了一个dynamic_rnn网络,其形状为(batch_size, sequence_lengh, depth)的输入数据已手动填充到长度为最长的示例(在本例中为97),并将其保存为检查点。 要评估“真实世界数据”上的网络,我加载检查点并将未填充的数据输入恢复的输入张量(使用tf.Session.run())。我收到一个TensorFlow:评估使用未填充数据填充数据的训练网络(ValueError:无法填充形状值...)

ValueError: Cannot feed value of shape (1, 1, 32) for Tensor 'input_x:0', which has shape '(?, 97, 32)' 

使用tf.Graph.get_operation_by_name()恢复输入张量。

一个可能的解决方法是填充输入,使其符合(?,97,32),但由于支持批量填充(直观上应该遇到相同的问题)实现我希望指针更好解。

回答

0

输入的序列长度必须与训练数据相同。神经网络被构造成接受一定大小的数组。在你的情况下,它是一个长度为97,长度为32的编码序列。

你可以认为它像一个非常严格的numpy函数,它对除第一维外的所有内容都有硬编码的大小限制。您应该使用与填充训练数据相同的填充来填充输入。

+0

谢谢。我想我被[野蛮](http://www.wildml.com/2016/08/rnns-in-tensorflow-a-practical-guide-and- undocumented-features /)上的一篇文章分心“您只需要在批次中填入相同的长度(该批次中示例的最大长度)。这样,一个很长的例子只会影响单个批次[...]” – 0x14d