Path: blob/master/site/zh-cn/model_optimization/guide/combine/pcqat_example.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
稀疏性和聚类保留量化感知训练 (PCQAT) Keras 示例
文本特征向量
这是一个展示稀疏性和聚类保留量化感知训练 (PCQAT) API 用法的端到端示例,该 API 是 TensorFlow 模型优化工具包的协作优化流水线的一部分。
其他页面
有关流水线和其他可用技术的简介,请参阅协作优化概述页面。
目录
在本教程中,您将:
从头开始为 MNIST 数据集训练一个
tf.keras
模型。通过剪枝对模型进行微调,查看准确率,并观察模型已被成功剪枝。
对剪枝后的模型应用稀疏性保留聚类,并观察之前应用的稀疏性已被保留。
应用 QAT 并观察稀疏性和聚类的损失。
应用 PCQAT 并观察之前应用的稀疏性和聚类已被保留。
生成一个 TFLite 模型并观察对其应用 PCQAT 的效果。
比较不同模型的大小,以观察应用稀疏性以及稀疏性保留聚类和 PCQAT 等协作优化技术的压缩优势。
将完全优化模型的准确率与未优化的基线模型准确率进行比较。
安装
您可以在本地 virtualenv 或 Colab 中运行此 Jupyter 笔记本。有关设置依赖项的详细信息,请参阅安装指南。
为 MNIST 训练待剪枝和聚类的 tf.keras 模型
评估基准模型并保存以备稍后使用
将模型剪枝和微调至 50% 稀疏性
应用 prune_low_magnitude()
API 来获得要在下一步聚类的剪枝模型。有关剪枝 API 的更多信息,请参阅剪枝综合指南。
定义模型并应用稀疏性 API
请注意,使用的是预训练模型。
微调模型,检查稀疏性,并根据基准评估准确率
在 3 个周期内使用剪枝对模型进行微调。
定义辅助函数来计算和打印模型的稀疏性和聚类。
我们先剥离剪枝包装器,然后检查模型内核是否已正确剪枝。
应用稀疏性保留聚类并检查其在两种情况下对模型稀疏性的影响
接下来,对剪枝后的模型应用稀疏性保留聚类,并观察聚类数量和确认稀疏性已保留。
先剥离聚类包装器,然后检查模型是否正确剪枝和聚类。
应用 QAT 和 PCQAT 并检查对模型聚类和稀疏性的影响
接下来,对稀疏性聚类模型应用 QAT 和 PCQAT,并观察 PCQAT 在模型中保留了权重稀疏性和聚类。请注意,剥离后的模型会传递给 QAT 和 PCQAT API。
查看 PCQAT 模型的压缩优势
定义辅助函数以获取压缩的模型文件。
观察将稀疏性、聚类和 PCQAT 应用于模型会产生显著的压缩优势。
查看从 TF 到 TFLite 的准确率持久性
定义一个辅助函数,基于测试数据集评估 TFLite 模型。
评估已被剪枝、聚类和量化的模型,然后看到 TFLite 后端保持 TensorFlow 的准确率。
结论
在本教程中,您学习了如何创建模型,使用 prune_low_magnitude()
API 对其进行剪枝,以及使用 cluster_weights()
API 应用稀疏性保留聚类,以在对权重进行聚类时保留稀疏性。
接下来,应用稀疏性和聚类保留量化感知训练 (PCQAT) 以在使用 QAT 时保留模型的稀疏性和聚类。将最终 PCQAT 模型与 QAT 模型进行了比较,表明稀疏性和聚类在前者中得到保留,在后者中则丢失。
接下来,将模型转换为 TFLite 以显示链式稀疏性、聚类和 PCQAT 模型优化技术的压缩优势,并对 TFLite 模型进行评估以确保在 TFLite 后端保持准确率。
最后,将 PCQAT TFLite 模型准确率与预优化基准模型准确率进行比较,表明协作优化技术在保持与原始模型相似的准确率的同时获得了压缩优势。