Tensorflow培训:为什么两次连续培训比一次培训更好

时间:2017-10-27 08:48:59

标签: python tensorflow keras regression

我正在使用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

从上面的图片中,我发现 Scheme1 更好 Scheme2 ,即使Scheme2设置了更多的纪元

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

0 个答案:

没有答案