使用MNIST数据集,在本例中,我将模型训练2个阶段,然后将模型保存到
.h5
文件。然后重新加载模型,修改模型并重新编译。但我想重新开始训练。所以我想使用重新加载的模型的优化器来继续培训。代码如下:
MLP = keras.models.Sequential([
keras.layers.Dense(100, activation='sigmoid', input_shape=(784,)),
keras.layers.Dense(10, activation='softmax')
])
MLP.compile(optimizer=tf.keras.optimizers.Adam(lr=0.5), loss=tf.losses.log_loss, metrics=['accuracy'])
training_output = MLP.fit(x_train, y_train, epochs=2, validation_data=(x_val, y_val), verbose=2, initial_epoch=0)
MLP.save('test.h5')
MLP = keras.models.load_model('test.h5', custom_objects={'log_loss': log_loss})
modelt = MLP
modelt = # update modelt architecture
modelt.compile(optimizer=MLP.optimizer, loss=tf.losses.log_loss, metrics=['accuracy'])
training_output = modelt.fit(x_train, y_train, epochs=4, validation_data=(x_val, y_val), verbose=2, initial_epoch=2)
Epoch 1/2
- 1s - loss: 1.2690 - acc: 0.2216 - val_loss: 1.3097 - val_acc: 0.2095
Epoch 2/2
- 1s - loss: 1.2859 - acc: 0.2030 - val_loss: 1.2420 - val_acc: 0.1760
Epoch 3/4
- 1s - loss: 2.8945 - acc: 0.0993 - val_loss: 2.9367 - val_acc: 0.0890
Epoch 4/4
- 1s - loss: 2.9035 - acc: 0.0993 - val_loss: 2.9367 - val_acc: 0.0890
编辑:
模型的简单保存和重新加载将返回以下结果:
lr begin: 0.15811755
begin: [0.35258077597618104, 0.1265]
lr end: 0.25961164
end: [1.0754492826461792, 0.2785]
-------------------------------------------------------------
lr begin: 0.25961164
begin: [1.0754492826461792, 0.2785]
lr end: 0.34131044
end: [1.5968322057723998, 0.2185]
-------------------------------------------------------------
lr begin: 0.34131044
begin: [1.5968322057723998, 0.2185]
lr end: 0.3903688
end: [2.8819153175354004, 0.106]
-------------------------------------------------------------
lr begin: 0.3903688
begin: [2.8819153175354004, 0.106]
lr end: 0.42264876
end: [2.8819153175354004, 0.106]