如何连接" Jagged"张量

时间:2017-01-22 23:02:50

标签: python python-3.x machine-learning tensorflow conv-neural-network

我正在尝试在TensorFlow中编写this论文的实现,我遇到了一些障碍。在我的池层中,我必须将所有内容连接在一起。这是我使用的代码:

pooled_outputs

当我运行此代码时,它会打印出[<tf.Tensor 'conv-maxpool-3/pool:0' shape=(?, 94, 1, 128) dtype=float32>, <tf.Tensor 'conv-maxpool-4/pool:0' shape=(?, 51, 1, 128) dtype=float32>, <tf.Tensor 'conv-maxpool-5/pool:0' shape=(?, 237, 1, 128) dtype=float32>]

pooled_outputs = [tf.reshape(out, ["?", 94, 1, self.max_length]) for out in pooled_outputs]

我最初在没有ValueError: Dimension 1 in both shapes must be equal, but are 51 and 237 行的情况下尝试了此代码,我收到了此错误:

TypeError: Expected binary or unicode string, got 94

当我在重塑行中添加时,我收到了这个错误:

response.Concat

我知道的第二个错误是因为我通过了&#34;?&#34;对于新尺寸,我认为第一个错误是因为张量不是相同的尺寸。 我怎样才能正确填充这些张贴,以便我可以毫无问题地连接它们?

1 个答案:

答案 0 :(得分:1)

您可以将-1作为形状的一个组件传递给tf.reshape方法;它将从张量的形状自动推断出来,因此总大小将是相同的。

因此,尝试将问题行更改为

pooled_outputs = [tf.reshape(out, [-1, 94, 1, self.max_length]) for out in pooled_outputs]

有关详细信息,请参阅documentation