Facebook 于北京时间2019年6月25日更新FastText代码,增加了FastText.ZIP:Compressing Text Classification Models论文的模型压缩实现,论文地址https://arxiv.org/abs/1612.03651
压缩后的模型能减小到10M以内
一、新版函数的变化
1.classification text的supervisor()变为train_supervisor(),只能输入模型的学习参数以及训练集文件,去掉直接保存模型的功能
注:词向量训练的函数也有修改,可以自行查看github代码
旧版代码:
新版代码:
2.保存模型要用save_model()
二、预测结果的改变
旧版中预测单个文本,也必须把分词结果保存在list中, 新版可以直接单句string形式输入也可以list,同时输出标签会带有前缀“__label__”
预测结果如下:
输入string:(('__label__测试',), array([1.00000727]))
或者输入list:([['__label__测试']], array([[1.00000727]]))
二、对训练好的模型进行压缩
import fasttext
old_model_path = 'clf.model.bin'
source_model_path = model_path
old_model = fasttext.load_model(source_model_path)
data_path = 'train.txt'
'''compress'''
print('begin compress') #参数retrain=True的话需要输入原来的训练数据,会重新训练,模型不重新训练,还有其他参数未研究
old_model.quantize()
print('compress finish')
old_model.save_model(model_path.replace('.bin', '.ftz'))
print('save finished')
压缩后文件大小:
注意:旧版本的代码训练的模型由于与新版本不一样,要重新训练,否则load_model旧模型会报错
ValueError: /home/mnt/ppt_project_data/ppt_fasttext_clf_files/online_model/clf_ppt.model.bin has wrong file format!
Process finished with exit code 1