如何在最后一个轴之外连接keras层

时间:2018-05-06 09:55:07

标签: tensorflow keras

我尝试将keras图层连接到最后一个轴之外。

concat_layer = keras.layers.concatenate([layer1,layer2],axis=3);

layer1和layer2的形状都是(?,7,7),现在我希望它变成(?,7,7,2)而不是(?,7,14)。如果我写的像axis = 3,它会返回“IndexError:list assignment index out of range”...

我该怎么办?非常感谢你!

3 个答案:

答案 0 :(得分:1)

Keras backend有一个 expand_dim 操作,您可以将其与Lambda图层一起使用。尝试:

import keras.backend as K
from keras.layers import Lambda, concatenate

layer1 = Lambda(lambda x: K.expand_dims(x, axis=3))(layer1)
layer2 = Lambda(lambda x: K.expand_dims(x, axis=3))(layer2)
concat_layer = concatenate([layer1, layer2], axis=3)

答案 1 :(得分:0)

您可以使用keras.backend.stack,例如:

keras.backend.stack([layer1,layer2],axis=-1)

答案 2 :(得分:0)

将图层重塑为所需尺寸,然后使用新添加的轴进行连接

from keras.layers import Reshape
from keras.layers.merge import concatenate

layer1 = Reshape((7, 7, 1))(layer1)
layer2 = Reshape((7, 7, 1))(layer2)
concat_layer = concatenate([layer1, layer2], axis=3)