Keras 1.3:使用批量标准化共享模型权重时出错

时间:2018-03-21 08:39:03

标签: tensorflow keras keras-layer

我想通过一个模型传递两个输入,然后需要连接两个输入并通过第二个模型,其中两个输入共享model1的权重,如下面的代码所示:

x = Conv2D(64, (3, 3))(input0)
#x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)
out = Flatten()(x)

model1 = Model(input0, out) 
model1 = Model(input0, out)
out_a = model1(input1)
out_b = model1(input2)

concatenated = keras.layers.concatenate([out_a, out_b])
out = Dense(1, activation='sigmoid')(concatenated)
model2 = Model([input1, input2], out)

如上所述,没有批量标准化。但是,如果我取消注释BatchNormalization,则代码会出现以下错误:

ValueError: Variable batch_normalization_5/moving_mean/biased already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at

我如何解决此错误。

完整模型的图如下所示:

weights of model are same for both inputs.

当使用具有tensorflow 1.3的多个GPU时,人们收到此错误消息,但是,我的错误消息相同但错误原因不同。

1 个答案:

答案 0 :(得分:0)

通过将tensorflow 1.3升级到1.4来解决问题。