Keras 中是否有 method/function 来恢复模型在不同训练时期的权重?
Is there any method/function within Keras to recover the weights of a model during different training epochs?
我有一个模型,我想针对某个超参数设置训练 10 个时期。训练后,我将使用 history.history
对象并找到验证损失最小的时期。一旦我有了这个最好的得分时期,我想检索这个模型并用它来预测测试数据。现在,想象一下我最好的得分时代不是最后一个时代。这个 Keras 历史对象(例如 history.model
)中是否有任何选项可以检索过去的权重值?我想,如果没有,我将不得不创建一个字典并临时存储每个时期的每个模型,直到完成训练并找到最好的模型。但是,当使用 model.fit
时,没有选项可以正确存储每个时期的每个模型。你会怎么做?
Keras 提供了在每个时期后根据验证数据评估模型的选项
将数据分为训练、测试和验证数据后,您可以像这样训练模型:
model=modelmlp(np.shape(x_trai)[0],hidden,4)
model.compile(loss='categorical_crossentropy', optimizer = 'adam', metrics='accuracy'])
hist=model.fit(x_train,y_train,epochs=epochs,batch_size=batch,
validation_data(x_valid,y_valid),verbose=verbose[1],
callbacks=[ModelCheckpoint(filepath='bestweigths.hdf5',
monitor='val_loss',verbose=verbose[2],save_best_only=True,mode='min')])
model=load_model('bestweigths.hdf5')
此代码将训练您的模型,并且在每个时期之后,您的模型将在验证数据上进行评估。每次改进验证数据的结果时,模型都会保存在文件中
训练过程结束后,您只需从文件中加载模型
这件事可以用keras的回调class。
您可以根据需要的指标保存模型权重。比方说,您需要以最小的损失保存模型。您必须定义模型检查点。
首先在训练模型之前以下面给定的格式定义检查点
callbacks = [ModelCheckpoint(filepath='resNet_centering2.h5', monitor='val_loss', mode='min', save_best_only=True)]
既然您已经定义了回调,那么您必须在 model.fit 调用中使用此回调
history = model.fit(
x=X_train,
y=Y_train,
callbacks=callbacks,
batch_size=4,
epochs=100,
verbose=1,
validation_data=(X_test, Y_test))
这会将模型的最佳权重保存在定义的文件路径中,您可以使用下面给定的调用获取这些权重。
model=load_model('bestweigths.hdf5')
希望能解决您的问题。
我有一个模型,我想针对某个超参数设置训练 10 个时期。训练后,我将使用 history.history
对象并找到验证损失最小的时期。一旦我有了这个最好的得分时期,我想检索这个模型并用它来预测测试数据。现在,想象一下我最好的得分时代不是最后一个时代。这个 Keras 历史对象(例如 history.model
)中是否有任何选项可以检索过去的权重值?我想,如果没有,我将不得不创建一个字典并临时存储每个时期的每个模型,直到完成训练并找到最好的模型。但是,当使用 model.fit
时,没有选项可以正确存储每个时期的每个模型。你会怎么做?
Keras 提供了在每个时期后根据验证数据评估模型的选项
将数据分为训练、测试和验证数据后,您可以像这样训练模型:
model=modelmlp(np.shape(x_trai)[0],hidden,4)
model.compile(loss='categorical_crossentropy', optimizer = 'adam', metrics='accuracy'])
hist=model.fit(x_train,y_train,epochs=epochs,batch_size=batch,
validation_data(x_valid,y_valid),verbose=verbose[1],
callbacks=[ModelCheckpoint(filepath='bestweigths.hdf5',
monitor='val_loss',verbose=verbose[2],save_best_only=True,mode='min')])
model=load_model('bestweigths.hdf5')
此代码将训练您的模型,并且在每个时期之后,您的模型将在验证数据上进行评估。每次改进验证数据的结果时,模型都会保存在文件中
训练过程结束后,您只需从文件中加载模型
这件事可以用keras的回调class。 您可以根据需要的指标保存模型权重。比方说,您需要以最小的损失保存模型。您必须定义模型检查点。
首先在训练模型之前以下面给定的格式定义检查点
callbacks = [ModelCheckpoint(filepath='resNet_centering2.h5', monitor='val_loss', mode='min', save_best_only=True)]
既然您已经定义了回调,那么您必须在 model.fit 调用中使用此回调
history = model.fit(
x=X_train,
y=Y_train,
callbacks=callbacks,
batch_size=4,
epochs=100,
verbose=1,
validation_data=(X_test, Y_test))
这会将模型的最佳权重保存在定义的文件路径中,您可以使用下面给定的调用获取这些权重。
model=load_model('bestweigths.hdf5')
希望能解决您的问题。