我想定义一个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
我认为上面的代码不起作用?但是我怎样才能实现目标呢?谢谢!
答案 0 :(得分:1)
输入和输出形状必须固定在图层中。在您的示例中,具有32个滤镜的Conv2D将导致与具有10个神经元的Dense完全不同的形状。
如果你保证相同的输出形状,有可能使用"后端功能"在一个" Lambda"层。但是,这不会创建可训练的层!
如果您确实需要可训练的图层,我建议您只创建两个模型,一个用于输入数据2,另一个用于没有输入2的数据。你保留你的"如果"声明完全在您的模型之外,您可以使用它来分离您的训练数据。