tensorflow - Tensorflow:如何通过修剪阻止小值泄漏?
问题描述
PolynomialDecay的文档建议默认情况下,frequency=100
修剪仅每 100 步应用一次。这大概意味着被修剪为 0 的参数将在其他 99/100 步期间偏离 0。因此,在剪枝过程结束时,除非你小心翼翼地获得 100 步的精确倍数,否则你最终会得到一个没有完美剪枝但具有大量接近零值的模型。
如何阻止这种情况发生?您是否必须调整频率才能成为步数的除数?我找不到任何这样做的代码示例...
解决方案
根据文档中的这个示例:训练时tfmot.sparsity.keras.UpdatePruningStep()
必须注册回调:
callbacks = [
tfmot.sparsity.keras.UpdatePruningStep(),
…
]
model_for_pruning.fit(…, callbacks=callbacks)
这将确保在训练结束时应用掩码(并将权重设置为零)。 https://github.com/tensorflow/model-optimization/blob/master/tensorflow_model_optimization/python/core/sparsity/keras/pruning_callbacks.py#L64
推荐阅读
- python-3.x - 如何使用 Pandas 写入 Excel?
- android - 如何从 Windows 应用程序更新数据库并从 Android 应用程序查看该数据?
- git - 在用户之间共享 Git 对象存储库
- json - jmeter 无法正确解析 10 MB 以上的 Json
- mongodb - MongoDB 查询优化 - 回顾
- html - 如何在此框中添加更多文本?
- python - 即使在较大的 alpha 值上,梯度体面也不会收敛
- python - 从字符串中产生所有子字谜
- node.js - 将 node.js 项目转换为 wp 插件
- ios - SWIFT如何使UIButton的右侧先出现然后左侧