代码之家  ›  专栏  ›  技术社区  ›  Tian

如何将自定义路缘石层与多个输出连接起来

  •  1
  • Tian  · 技术社区  · 6 年前

    我定义了一个具有两个输出的自定义Keras层custom_layer:output_1和output_2。接下来,我希望两个独立的层A和B分别连接到outpu1和outpu2。如何实现这种网络?

    Network sketch map:

    3 回复  |  直到 6 年前
        1
  •  0
  •   paolof89    6 年前

    使用keras api模式可以创建任何网络体系结构。 在你的情况下,一个可能的解决方案是

    input_layer = Input(shape=(100,1))
    custom_layer = Dense(10)(input_layer)
    
    # layer A model
    layer_a = Dense(10, activation='relu')(custom_layer)
    output1 = Dense(1, activation='sigmoid')(layer_a)
    
    # layer B model
    layer_b = Dense(10, activation='relu')(custom_layer)
    output1 = Dense(1, activation='sigmoid')(layer_b)
    
    # define model input and output
    model = Model(inputs=input_layer, outputs=[output1, output2])
    
        2
  •  0
  •   today    6 年前

    如果自定义层在一个输入上应用时有两个输出张量(即返回输出张量列表),则:

    custom_layer_output = CustomLayer(...)(input_tensor)
    
    layer_a_output = LayerA(...)(custom_layer_output[0])
    layer_b_output = LayerB(...)(custom_layer_output[1])
    

    但如果它应用于两个不同的输入张量,则:

    custom_layer = CustomLayer(...)
    out1 = custom_layer(input1)
    out2 = custom_layer(input2)
    
    layer_a_output = LayerA(...)(out1)
    layer_b_output = LayerB(...)(out2)
    
    # alternative way
    layer_a_output = LayerA(...)(custom_layer.get_output_at(0))
    layer_b_output = LayerB(...)(custom_layer.get_output_at(1))
    
        3
  •  0
  •   dennis-w    6 年前

    merge ,这将很快更新文档。 基本思想是使用列表。每一个你必须重新在你的自定义层(像层和形状)你必须返回他们的列表。

    output_1, output_2 = custom_layer()(input_layer)
    layer_a_output = layer_a()(output_1)
    layer_b_output = layer_b()(output_2)