我正在使用Keras Tensorflow处理回归问题 . 我发现了一些有趣的东西 . 1)这里有两个模型,除了第一个模型使用全局定义的“优化器”之外,它们实际上是相同的 .

optimizer = Adam() #as a global variable
def OneHiddenLayer_Model():
    model = Sequential()
    model.add(Dense(300 * inputDim, input_dim=inputDim, kernel_initializer='normal', activation=activationFunc)) 
    model.add(Dense(1, kernel_initializer='normal'))
    model.compile(loss='mean_squared_error', optimizer=optimizer)
    return model

def OneHiddenLayer_Model2():
    model = Sequential()
    model.add(Dense(300 * inputDim, input_dim=inputDim, kernel_initializer='normal', activation=activationFunc)) 
    model.add(Dense(1, kernel_initializer='normal'))
    model.compile(loss='mean_squared_error', optimizer=Adam())
    return model

2)然后,我使用两种方案来训练数据集(训练集(scaleX,Y);测试集(scaleTestX,testY)) .

2.1)Scheme1 . 与第一个模型连续两次拟合

numpy.random.seed(seed)
model = OneHiddenLayer_Model()
model.fit(scaleX, Y, validation_data=(scaleTestX, testY), epochs=250, batch_size=numBatch, verbose=0)

numpy.random.seed(seed)
model = OneHiddenLayer_Model()
history = model.fit(scaleX, Y, validation_data=(scaleTestX, testY), epochs=500, batch_size=numBatch, verbose=0)

predictY = model.predict(scaleX)
predictTestY = model.predict(scaleTestX)

2.2)Scheme2 . 一个适合第二个模型

numpy.random.seed(seed)
model = OneHiddenLayer_Model2()
history = model.fit(scaleX, Y, validation_data=(scaleTestX, testY), epochs=500, batch_size=numBatch, verbose=0)

predictY = model.predict(scaleX)
predictTestY = model.predict(scaleTestX)

3) . 最后,为每个方案绘制结果,如下所示,(模型损失历史 - >在scaleX上预测 - >在scaleTestX上预测,

3.1)Scheme1
enter image description here

3.2)Scheme2(500个纪元)
enter image description here

3.3)使用Scheme2再添加一个测试并设置epochs = 1000
enter image description here

从上面的图像中,我发现 Scheme1better 而不是 Scheme2 ,即使Scheme2设置了更多的纪元 .

任何人都可以帮忙解释为什么Scheme1更好?非常感谢!!!