在Keras中,如何使用无维度的Reshape图层?

foo*_*bar 5 python reshape keras keras-layer

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

reshaped_layer = Reshape((None, None, 40*64))(my_layer)
Run Code Online (Sandbox Code Playgroud)

它会抛出一个错误,抱怨None values not supported.

(需要明确的是,这不是 Keras tf.keras,这只是 Keras)。

tod*_*day 5

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

其次,您可以将其用作-1只有一个轴的形状。它告诉图层Reshape根据您提供的其他轴的形状自动推断该轴的形状。那么考虑到这两点,那就是:

reshaped_out = Reshape((-1, 40*64))(layer_out)
Run Code Online (Sandbox Code Playgroud)