定义keras模型时如何使用if else语句

时间:2017-05-15 21:07:21

标签: keras

我想定义一个keras模型。模型有两个输入,一个输出。我想在模型定义中有一些if ... else ...语句,这样当第二个输入是一些有意义的数据时,if语句中的层被执行,而第二个输入是None时,else中的层声明被执行。这里有一些简单的代码来说明我的想法

def my_model(input_shape=None):
    input1 = Input(shape=input_shape)
    input2 = Input(shape=input_shape)

    if input2 != None:
        x= Conv2D(32, (3, 3))(input1)
    else:
        x = dense(10)(input1)

    model = Model([input1, input2], x)
    return model

我认为上面的代码不起作用?但是我怎样才能实现目标呢?谢谢!

1 个答案:

答案 0 :(得分:1)

输入和输出形状必须固定在图层中。在您的示例中,具有32个滤镜的Conv2D将导致与具有10个神经元的Dense完全不同的形状。

如果你保证相同的输出形状,有可能使用"后端功能"在一个" Lambda"层。但是,这不会创建可训练的层!

如果您确实需要可训练的图层,我建议您只创建两个模型,一个用于输入数据2,另一个用于没有输入2的数据。你保留你的"如果"声明完全在您的模型之外,您可以使用它来分离您的训练数据。