未验证 提交 d7116aa7 编写于 作者: L lijianshe02 提交者: GitHub

add FPGM, Optimal threshold pruning algorithm zn_doc test=develop (#238)

上级 ac10acf0
......@@ -12,7 +12,8 @@ Pruner
**参数:**
- **criterion** - 评估一个卷积层内通道重要性所参考的指标。目前支持 ``l1_norm`` 和 ``batch_norm_scale`` 。默认为 ``l1_norm`` 。若该参数设为 ``batch_norm_scale`` , 则表示剪枝算法将根据卷积层后连接的BatchNorm层的Scale参数的绝对值大小作为评估卷积层内通道重要性所参考的指标。 在初始化Pruner()类实例时,若没有传入该参数,则表示Pruner()使用criterion默认参数值 ``l1_norm`` ;可以显示地传入criterion的值以改变剪枝算法的剪枝策略。
- **criterion** - 评估一个卷积层内通道重要性所参考的指标。目前支持 ``l1_norm`` , ``bn_scale`` , ``geometry_median`` 。默认为 ``l1_norm`` 。若该参数设为 ``bn_scale`` , 则表示剪枝算法将根据卷积层后连接的BatchNorm层的Scale参数的绝对值大小作为评估卷积层内通道重要性所参考的指标。若参数设为 ``geometry_median``, 则表示剪枝算法将基于卷基层内通道的几何中心作为评估卷积层内通道重要性参考指标。 在初始化Pruner()类实例时,若没有传入该参数,则表示Pruner()使用criterion默认参数值 ``l1_norm`` ;可以显示地传入criterion的值以改变剪枝算法的剪枝策略。
- **idx_selector** - 基于卷积层内通道重要性分数,指示选择裁剪的卷积层内通道索引的策略。目前支持 ``default_idx_selector`` 和 ``optimal_threshold`` 两种选择策略。默认为 ``default_idx_selector`` 。 ``default_idx_selector`` 策略表示根据卷积层内通道的重要性分数进行选择要被裁剪的通道。 ``optimal_threshold`` 策略和 ``bn_scale`` 准则配合使用,即将 ``criterion`` 设置为 ``bn_scale`` , 并将该参数设置为 ``optimal_threshold``, 表示根据卷积层后链接的BatchNorm层的Scale参数计算出要裁剪的最优裁剪阈值,并根据该阈值进行通道裁剪。在初始话Pruner()实例时,若没有传入该参数,则表示Pruner()使用idx_selector默认参数 ``default_idx_selector`` 。
**返回:** 一个Pruner类的实例
......@@ -124,7 +125,16 @@ Pruner
exe = fluid.Executor(place)
scope = fluid.Scope()
exe.run(startup_program, scope=scope)
# Initiallize Pruner() instance with default criterion and idx_selector
pruner = Pruner()
# Set criterion
# criterion = 'geometry_median'
# pruner = Pruner(criterion=criterion)
# Set criterion and idx_selector
# criterion = 'bn_scale'
# idx_selector = 'optimal_threshold'
# pruner = Pruner(criterion=criterion, idx_selector=idx_selector)
main_program, _, _ = pruner.prune(
main_program,
scope,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册