模型、参数和文件的保存方法 --- 保存模型方法篇
numpy保存 npy 文件
import numpy as np
np.save(文件名, 变量名)
变量名 = np.load(文件名)
更详细内容:
https://blog.csdn.net/leilei7407/article/details/107511187
tf.keras保存 模型和参数
h5 文件
保存模型和权重存在 h.5 文件
### model 指的是好,并完成训练的模型
# 保存模型结构及权重
model.save('./data/keras_model.h5')
del model #删除现有模型 (可有可无)
# identical to the previous one
model = models.load_model('./data/keras_model.h5')
model.evaluate(x_test,y_test)
分别保存模型结构和权重,并写成 h.5 文件
# 保存模型结构
json_str = model.to_json()
# 恢复模型结构
model_json = models.model_from_json(json_str)
#保存模型权重
model.save_weights('./data/keras_model_weight.h5')
# 恢复模型结构
model_json = models.model_from_json(json_str)
model_json.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['AUC']
)
# 加载权重
model_json.load_weights('./data/keras_model_weight.h5')
model_json.evaluate(x_test,y_test)
ckpt 文件 (推荐使用)
ckpt 文件 这是 TensorFlow原生方式保存的文件 , 推荐使用
# 保存权重,该方式仅仅保存权重张量
model.save_weights('./data/tf_model_weights.ckpt',save_format = "tf")
# 保存模型结构与模型参数到文件,该方式保存的模型具有跨平台性便于部署
model.save('./data/tf_model_savedmodel', save_format="tf")
print('export saved model.')
model_loaded = tf.keras.models.load_model('./data/tf_model_savedmodel')
model_loaded.evaluate(x_test,y_test)
pytorch 保存模型和参数
pkl 文件
保存模型参数(推荐)
# 保存模型参数
torch.save(net.state_dict(), "./data/net_parameter.pkl")
net_clone = create_net()
net_clone.load_state_dict(torch.load("./data/net_parameter.pkl"))
net_clone.forward(torch.tensor(x_test[0:10]).float()).data
保存完整模型 (不推荐)
torch.save(net, './data/net_model.pkl')
net_loaded = torch.load('./data/net_model.pkl')
XGBoost 等树模型的保存方法
使用 pickle api保存模型 并完成加载
from xgboost import XGBClassifier
import pickle
model = XGBClassifier()
## save model to file
pickle.dump(model, open("文件名.dat", "wb")) # 写模式用于保存模型
print("Saved model to: 文件名.dat")
## load model from file
loaded_model = pickle.load(open("文件名.dat", "rb")) # 读模式用于加载模型
print("Loaded model from: 文件名.dat")
# make predictions for test data
predictions = loaded_model.predict(X_test)
使用 Joblib 保存模型并且完成加载后的使用 (通过 sklearn 保存模型)
注意:使用 joblib是直接对模型进行保存操作的,不需要接祖 open 的 读写功能!
from xgboost import XGBClassifier
from sklearn.externals import joblib
model = XGBClassifier()
model.fit(X_train, y_train)
# save model to file
joblib.dump(model, "文件名.dat")
print("Saved model to: 文件名.dat")
# load model from file
loaded_model = joblib.load("文件名.dat")
print("Loaded model from: 文件名.dat")
# make predictions for test data
predictions = loaded_model.predict(X_test)