Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
108e2d90
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
108e2d90
编写于
6月 03, 2020
作者:
J
Jason
提交者:
GitHub
6月 03, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #131 from SunAhong1993/syf_prune
fix the prune
上级
7df89bb4
5d198cda
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
30 addition
and
2 deletion
+30
-2
paddlex/cv/models/slim/prune.py
paddlex/cv/models/slim/prune.py
+30
-2
未找到文件。
paddlex/cv/models/slim/prune.py
浏览文件 @
108e2d90
...
...
@@ -115,6 +115,21 @@ def channel_prune(program, prune_names, prune_ratios, place, only_graph=False):
Returns:
paddle.fluid.Program: 裁剪后的Program。
"""
prog_var_shape_dict
=
{}
for
var
in
program
.
list_vars
():
try
:
prog_var_shape_dict
[
var
.
name
]
=
var
.
shape
except
Exception
:
pass
index
=
0
for
param
,
ratio
in
zip
(
prune_names
,
prune_ratios
):
origin_num
=
prog_var_shape_dict
[
param
][
0
]
pruned_num
=
int
(
round
(
origin_num
*
ratio
))
while
origin_num
==
pruned_num
:
ratio
-=
0.1
pruned_num
=
int
(
round
(
origin_num
*
(
ratio
)))
prune_ratios
[
index
]
=
ratio
index
+=
1
scope
=
fluid
.
global_scope
()
pruner
=
Pruner
()
program
,
_
,
_
=
pruner
.
prune
(
...
...
@@ -266,8 +281,8 @@ def get_params_ratios(sensitivities_file, eval_metric_loss=0.05):
if
not
osp
.
exists
(
sensitivities_file
):
raise
Exception
(
'The sensitivities file is not exists!'
)
sensitivitives
=
paddleslim
.
prune
.
load_sensitivities
(
sensitivities_file
)
params_ratios
=
paddleslim
.
prune
.
get_ratios_by_loss
(
sensitivitives
,
eval_metric_loss
)
params_ratios
=
paddleslim
.
prune
.
get_ratios_by_loss
(
sensitivitives
,
eval_metric_loss
)
return
params_ratios
...
...
@@ -286,6 +301,19 @@ def cal_model_size(program, place, sensitivities_file, eval_metric_loss=0.05):
"""
prune_params_ratios
=
get_params_ratios
(
sensitivities_file
,
eval_metric_loss
)
prog_var_shape_dict
=
{}
for
var
in
program
.
list_vars
():
try
:
prog_var_shape_dict
[
var
.
name
]
=
var
.
shape
except
Exception
:
pass
for
param
,
ratio
in
prune_params_ratios
.
items
():
origin_num
=
prog_var_shape_dict
[
param
][
0
]
pruned_num
=
int
(
round
(
origin_num
*
ratio
))
while
origin_num
==
pruned_num
:
ratio
-=
0.1
pruned_num
=
int
(
round
(
origin_num
*
(
ratio
)))
prune_params_ratios
[
param
]
=
ratio
prune_program
=
channel_prune
(
program
,
list
(
prune_params_ratios
.
keys
()),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录