Python model.save()在Keras中实际保存了什么?
我有一个Keras模型,我用100个时代训练了这个模型 现在,我在第85纪元时损失了0.0085,在后一纪元时损失了0.0092 我的问题是,Python model.save()在Keras中实际保存了什么?,python,keras,deep-learning,Python,Keras,Deep Learning,我有一个Keras模型,我用100个时代训练了这个模型 现在,我在第85纪元时损失了0.0085,在后一纪元时损失了0.0092 我的问题是, Keras中的model.save()保存了什么 是否保存从lat epoch(即100)获得的权重 或者它保存了来自最佳纪元(即纪元85)的权重 或者所有100个时代的平均或平均重量 keras model.save()设计用于在完成100个历元后保存权重的是什么 感谢您提前解释:)。模型.save()保存整个体系结构、权重和优化器状态。此命令保存重建
- 模型的架构,允许重新创建模型李>
- 模型的权重李>
- 培训配置(损失、优化器)李>
- 优化器的状态,允许在您停止的位置恢复培训
keras.models.load\u model(filepath)
重新实例化您的模型<代码>加载模型还将使用保存的培训配置编译模型
请参见示例:
从keras.models导入负载模型
model.save('my_model.h5')#创建一个HDF5文件'my_model.h5'
del model#删除现有模型
#返回已编译的模型
#与前一个相同
模型=负载模型('my\u model.h5')
来源:模型.save()将保存有关NN的许多详细信息。最重要的细节是
过度拟合中获得的接近程度
此外,《代码》Keras
的创建者弗朗索瓦·乔利特(Francois Chollet)认为,纪元的数量没有被保存,在大多数情况下也没有意义
这是正确的,除非您激活回调
选项,该选项在一定次数(您称之为最佳迭代)后打开网络训练的提前停止。看
我的问题是,model.save()保存了什么,“它保存了权重吗?”
它来自lat epoch(即100)“或”它从
最佳历元(即历元85)“或”所有100个历元的平均或平均权重
时代
所有保存的内容(权重、优化器状态等)已在其他答案中提到。在您的情况下,将保存100个纪元结束时模型的权重
如果希望保存最佳模型(损失最少),则需要创建一个ModelCheckPoint
回调对象,并通过callbacks
参数将其传递给fit()
方法
链接:在EarlyStopping patience=10中。这是什么意思?。例如,这意味着从20年开始,直到30年前,该模型不会减少损失。保存第30纪元或第20纪元的权重。
import pandas as pd
from keras.callbacks import EarlyStopping, ModelCheckpoint
#Stop when val_loss is not decreasing
earlyStopping = EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='min')
#Save the model after every epoch.
checkpointer = ModelCheckpoint(filepath='Model_1_weights.h5', verbose=1, save_best_only=True)
#history variable will save training progress after each epoch
history = model.fit(X_train, y_train, batch_size=20, epochs=40, validation_data=(X_valid, y_valid), shuffle=True, callbacks=[checkpointer, earlyStopping])
#Save progress of each epoch in .csv file
hist_df = pd.DataFrame(history.history)
hist_csv_file = 'History_Model_1.csv'
with open(hist_csv_file, mode='w') as f:
hist_df.to_csv(f)