Keras - 创建了三个相似的模型,但只有一个正在学习

时间:2021-05-07 13:50:31

标签: keras

我创建了三个具有相同架构的卷积自动编码器,以从与不同类型树相关的一些图像中提取特征。

我的代码类似于:

model1 = myAutoencoder()
model2 = myAutoencoder()
model3 = myAutoencoder()

opt = keras.optimizers.Adam(learning_rate=0.001)
loss = keras.losses.MeanSquaredError()

model1.compile(opt=opt, loss=loss)
model2.compile(opt=opt, loss=loss)
model3.compile(opt=opt, loss=loss)

然后我训练:

#X1, X2, X3 are tensors of 64x64 RGB images: for example(100, 64,64,3)
model1.fit(X1, X1)  
model2.fit(X2, X2) 
model3.fit(X3, X3)  

然而,只有第一个模型在学习,而第二个和第三个模型被困在与图中相同的损失:

enter image description here

有趣的是,如果我交换模型 1 和模型 2 的位置,如下所示:

model2.fit(X2, X2)  
model1.fit(X1, X1) 
model3.fit(X3, X3) 

那么只有模型 2 正在学习,模型 1 和模型 3 卡住了。我不明白为什么...

编辑:我正在做的实际培训是这样的:

def scheduler(epoch, lr):
if epoch < 50:
    return lr
else:
    return lr * np.math.exp(-0.1)


model2.fit(X2, X2, epochs=100, callbacks=[LearningRateScheduler(scheduler)])  
model1.fit(X1, X1, epochs=100, callbacks=[LearningRateScheduler(scheduler)]) 
model3.fit(X3, X3, epochs=100, callbacks=[LearningRateScheduler(scheduler)])

我发现如果我删除回调,学习过程是“正常的”,是否有回调干扰模型的原因?

0 个答案:

没有答案