【问题标题】:How to concatenate keras layers beyond the last axis如何在最后一个轴之外连接 keras 层
【发布时间】:2019-03-26 12:57:02
【问题描述】:

我试图在最后一个轴之外连接 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”...

我该怎么办?非常感谢!

【问题讨论】:

    标签: tensorflow keras


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

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

      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)
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • thx,但我试过了,抛出错误“AttributeError: 'Tensor' object has no attribute '_keras_history'”
        猜你喜欢
        • 2017-11-09
        • 2019-08-21
        • 2019-06-03
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        相关资源
        最近更新 更多