在Keras中,如何使用无尺寸的Reshape图层?

时间:2018-11-23 01:47:20

标签: python keras reshape keras-layer

在我的模型中,层的形状为[None, None, 40, 64]。我想将其重塑为[None, None, 40*64]。但是,如果我只是执行以下操作:

reshaped_layer = Reshape((None, None, 40*64))(my_layer)

抱怨None values not supported并引发错误。

(请注意,这不是tf.keras,这只是Keras)。

1 个答案:

答案 0 :(得分:1)

首先,您传递给Reshape层的参数是批次中一个样本的期望形状,而不是整个批次的样本。因此,由于批次中的每个样本都是3D张量,因此该参数还必须仅考虑该3D张量(即,不包括批次轴)。

第二,您可以将-1用作仅一个轴的形状。它告诉Reshape层根据您提供的其他轴的形状自动推断该轴的形状。因此,考虑到这两点,应该是:

reshaped_out = Reshape((-1, 40*64))(layer_out)