【问题标题】:How to do some calculation between the results from the middle layers in keras如何在keras中间层的结果之间进行一些计算
【发布时间】:2018-11-24 18:23:53
【问题描述】:

如果我构建了一个 keras 神经网络模型如下:

模型1:输入-> layer1

模型 2:输入 -> layer1 -> layer2 -> 操作 -> layer3 -> 输出

我想在model1的layer1的结果和model2的layer2的结果之间做一些计算,我该怎么办?我尝试使用一些 TensorFlow 代码进行计算但失败了。有什么方法可以达到我的目标吗?

【问题讨论】:

    标签: python tensorflow keras deep-learning keras-layer


    【解决方案1】:

    您可以为此使用Keras functional API

    from keras import layers
    from keras import models
    
    # define model 1 architecture
    m1_input = layers.Input(shape=('arbitrary shape'))
    m1_layer1 = layers.SomeLayer()(m1_input)
    
    # define model 2 architecture
    m2_input = layers.Input(shape=('arbitrary shape'))
    m2_layer1 = layers.SomeLayer()(m2_input)
    m2_layer2 = layers.SomeLayer()(m2_layer1)
    merge_m1 = layers.Lambda(SomeOperation)([m1_layer1, m2_layer2])
    m2_layer3 = layers.SomeLayer()(merge_m1)
    m2_output = layers.SomeLayer()(m2_layer3)
    
    # define the final model
    model = models.Model(inputs=[m1_input, m2_input], outputs=[m2_output])
    

    在上面的代码中,SomeOperation 应该是一个函数。查看documentation,了解有关 Keras 中 Lambda 层 的更多信息。或者,Keras 有一些简单的内置 merge layers,例如 addconcatenate,您可以使用它们来代替 Lambda 层。

    【讨论】:

    • 谢谢!我不知道。 Lambda 似乎是一个不错的工具。
    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多