首页 > 解决方案 > Tensorflow:如何通过修剪阻止小值泄漏?

问题描述

PolynomialDecay的文档建议默认情况下,frequency=100修剪仅每 100 步应用一次。这大概意味着被修剪为 0 的参数将在其他 99/100 步期间偏离 0。因此,在剪枝过程结束时,除非你小心翼翼地获得 100 步的精确倍数,否则你最终会得到一个没有完美剪枝但具有大量接近零值的模型。

如何阻止这种情况发生?您是否必须调整频率才能成为步数的除数?我找不到任何这样做的代码示例...

标签: tensorflowmachine-learning

解决方案


根据文档中的这个示例:训练时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


推荐阅读