Fasttext - 模型保存和加载
1 课程概览
本课讲解 Fasttext 模型保存和加载。模型训练耗时(如自动调参 1 小时),如果不保存,下次用又要重新训练。保存用 save_model,加载用 load_model。加载后可以继续预测。Fasttext API 总结:predict 预测、test 测试、save_model 保存、load_model 加载。
2 核心概念与定义
- save_model:保存模型。
- load_model:加载模型。
- 模型复用:训练一次,保存后多次加载使用。
3 模型与算法详解
为什么需要保存模型?
模型训练耗时,不保存下次又要重新训练。
- 自动调参可能 1 小时
- 不保存下次又要重新训练
- 保存后直接加载使用
模型保存和加载流程
1. 获取训练好的模型
2. 保存模型(save_model)
3. 加载模型(load_model)
4. 使用加载的模型进行预测
Fasttext API 总结
| API | 作用 |
|---|---|
train_supervised | 训练有监督模型 |
predict | 预测 |
test | 测试评估 |
save_model | 保存模型 |
load_model | 加载模型 |
模型文件后缀
后缀名无所谓,可以是 .bin、.pth、.pkl 等。
- Fasttext 默认 .bin
- 后缀名无所谓
4 数学原理与推导
模型保存
将模型参数序列化到文件。
$$\text{file} = \text{serialize}(\theta)$$
模型加载
从文件反序列化模型参数。
$$\theta = \text{deserialize}(\text{file})$$
5 代码示例
import fasttext
import os
def dm09_save_load():
"""模型保存和加载"""
# 1. 获取训练好的模型
print("1. 训练模型...")
model = fasttext.train_supervised(
input="data/cooking_pre_train.txt",
epoch=30, # 训练轮数
lr=1.0, # 学习率
wordNgrams=2 # n-gram 特征
)
# 2. 保存模型
print("2. 保存模型...")
# 创建 model 目录(如果不存在)
os.makedirs("model", exist_ok=True)
model.save_model("model/fasttext_model.bin")
print("模型已保存到 model/fasttext_model.bin")
# 3. 加载模型
print("3. 加载模型...")
model2 = fasttext.load_model("model/fasttext_model.bin")
print("模型已加载")
# 4. 使用加载的模型进行预测
print("4. 使用加载的模型进行预测...")
result = model2.predict(
"Which baking dish is best to bake a banana bread ?",
k=3, # 预测 3 个标签
threshold=0.5 # 阈值
)
print(f"预测结果: {result}")
# 5. 评估
metrics = model2.test("data/cooking_pre_validate.txt")
print(f"Precision@1: {metrics[1]}")
print(f"Recall@1: {metrics[2]}")
return model2
# 测试
if __name__ == "__main__":
print("=== 模型保存和加载 ===")
model = dm09_save_load()
代码说明
| 代码 | 说明 |
|---|---|
model.save_model("model/fasttext_model.bin") | 保存模型 |
fasttext.load_model("model/fasttext_model.bin") | 加载模型 |
model2.predict(...) | 使用加载的模型预测 |
os.makedirs("model", exist_ok=True) | 创建 model 目录 |
6 重难点与易错提醒
- ❗重点:保存用
save_model,加载用load_model。 - ❗重点:加载后的模型可以直接用于预测。
- ⚠️易错:预测时要用加载后的模型(model2),不是原来的模型(model)。
- 💡技巧:模型文件后缀名无所谓,Fasttext 默认 .bin。
7 课堂问答精选
Q1:为什么需要保存模型?
A:模型训练耗时(如自动调参 1 小时),如果不保存,下次用又要重新训练。保存后直接加载使用。
Q2:如何保存和加载模型?
A:保存用 model.save_model("model/fasttext_model.bin"),加载用 fasttext.load_model("model/fasttext_model.bin")。
Q3:加载后的模型可以做什么?
A:可以直接用于预测和评估。使用 model2.predict() 进行预测,使用 model2.test() 进行评估。
Q4:Fasttext 有哪些 API?
A:①train_supervised 训练有监督模型;②predict 预测;③test 测试评估;④save_model 保存模型;⑤load_model 加载模型。
8 本课小结
- 保存模型:
model.save_model("model/fasttext_model.bin")。 - 加载模型:
fasttext.load_model("model/fasttext_model.bin")。 - 加载后可直接用于预测和评估。
- Fasttext API:train_supervised、predict、test、save_model、load_model。
- 模型文件后缀名无所谓,默认 .bin。
9 延伸思考
- 如何进行词向量迁移?
- 迁移学习是什么?