Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Oneflow-Inc
of-maskrcnn-benchmark
提交
19338605
O
of-maskrcnn-benchmark
项目概览
Oneflow-Inc
/
of-maskrcnn-benchmark
10 个月 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
of-maskrcnn-benchmark
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
19338605
编写于
3月 19, 2019
作者:
L
leaves-zwx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
register param grad hook
上级
a629ae8a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
121 addition
and
111 deletion
+121
-111
maskrcnn_benchmark/engine/trainer.py
maskrcnn_benchmark/engine/trainer.py
+121
-111
未找到文件。
maskrcnn_benchmark/engine/trainer.py
浏览文件 @
19338605
...
...
@@ -8,15 +8,15 @@ import time
import
torch
import
torch.distributed
as
dist
import
maskrcnn_benchmark
from
maskrcnn_benchmark.utils.comm
import
get_world_size
from
maskrcnn_benchmark.utils.metric_logger
import
MetricLogger
from
maskrcnn_benchmark.structures.bounding_box
import
BoxList
import
numpy
as
np
import
os
import
maskrcnn_benchmark
from
maskrcnn_benchmark.structures.bounding_box
import
BoxList
from
functools
import
partial
def
reduce_loss_dict
(
loss_dict
):
"""
...
...
@@ -66,115 +66,8 @@ def do_train(
save_dir
=
'./new_dump'
if
not
os
.
path
.
exists
(
save_dir
):
os
.
makedirs
(
save_dir
)
if
not
os
.
path
.
exists
(
'./param_grad/'
):
os
.
makedirs
(
'./param_grad/'
)
# xfjiang: save param grad
# for key, value in model.named_parameters():
# print(key)
# backbone.body.stem.conv1.weight
# backbone.body.layer1.0.downsample.0.weight
# backbone.body.layer1.0.conv1.weight
# backbone.body.layer1.0.conv2.weight
# backbone.body.layer1.0.conv3.weight
# backbone.body.layer1.1.conv1.weight
# backbone.body.layer1.1.conv2.weight
# backbone.body.layer1.1.conv3.weight
# backbone.body.layer1.2.conv1.weight
# backbone.body.layer1.2.conv2.weight
# backbone.body.layer1.2.conv3.weight
# backbone.body.layer2.0.downsample.0.weight
# backbone.body.layer2.0.conv1.weight
# backbone.body.layer2.0.conv2.weight
# backbone.body.layer2.0.conv3.weight
# backbone.body.layer2.1.conv1.weight
# backbone.body.layer2.1.conv2.weight
# backbone.body.layer2.1.conv3.weight
# backbone.body.layer2.2.conv1.weight
# backbone.body.layer2.2.conv2.weight
# backbone.body.layer2.2.conv3.weight
# backbone.body.layer2.3.conv1.weight
# backbone.body.layer2.3.conv2.weight
# backbone.body.layer2.3.conv3.weight
# backbone.body.layer3.0.downsample.0.weight
# backbone.body.layer3.0.conv1.weight
# backbone.body.layer3.0.conv2.weight
# backbone.body.layer3.0.conv3.weight
# backbone.body.layer3.1.conv1.weight
# backbone.body.layer3.1.conv2.weight
# backbone.body.layer3.1.conv3.weight
# backbone.body.layer3.2.conv1.weight
# backbone.body.layer3.2.conv2.weight
# backbone.body.layer3.2.conv3.weight
# backbone.body.layer3.3.conv1.weight
# backbone.body.layer3.3.conv2.weight
# backbone.body.layer3.3.conv3.weight
# backbone.body.layer3.4.conv1.weight
# backbone.body.layer3.4.conv2.weight
# backbone.body.layer3.4.conv3.weight
# backbone.body.layer3.5.conv1.weight
# backbone.body.layer3.5.conv2.weight
# backbone.body.layer3.5.conv3.weight
# backbone.body.layer4.0.downsample.0.weight
# backbone.body.layer4.0.conv1.weight
# backbone.body.layer4.0.conv2.weight
# backbone.body.layer4.0.conv3.weight
# backbone.body.layer4.1.conv1.weight
# backbone.body.layer4.1.conv2.weight
# backbone.body.layer4.1.conv3.weight
# backbone.body.layer4.2.conv1.weight
# backbone.body.layer4.2.conv2.weight
# backbone.body.layer4.2.conv3.weight
# backbone.fpn.fpn_inner1.weight
# backbone.fpn.fpn_inner1.bias
# backbone.fpn.fpn_layer1.weight
# backbone.fpn.fpn_layer1.bias
# backbone.fpn.fpn_inner2.weight
# backbone.fpn.fpn_inner2.bias
# backbone.fpn.fpn_layer2.weight
# backbone.fpn.fpn_layer2.bias
# backbone.fpn.fpn_inner3.weight
# backbone.fpn.fpn_inner3.bias
# backbone.fpn.fpn_layer3.weight
# backbone.fpn.fpn_layer3.bias
# backbone.fpn.fpn_inner4.weight
# backbone.fpn.fpn_inner4.bias
# backbone.fpn.fpn_layer4.weight
# backbone.fpn.fpn_layer4.bias
# rpn.head.conv.weight
# rpn.head.conv.bias
# rpn.head.cls_logits.weight
# rpn.head.cls_logits.bias
# rpn.head.bbox_pred.weight
# rpn.head.bbox_pred.bias
# roi_heads.box.feature_extractor.fc6.weight
# roi_heads.box.feature_extractor.fc6.bias
# roi_heads.box.feature_extractor.fc7.weight
# roi_heads.box.feature_extractor.fc7.bias
# roi_heads.box.predictor.cls_score.weight
# roi_heads.box.predictor.cls_score.bias
# roi_heads.box.predictor.bbox_pred.weight
# roi_heads.box.predictor.bbox_pred.bias
# roi_heads.mask.feature_extractor.mask_fcn1.weight
# roi_heads.mask.feature_extractor.mask_fcn1.bias
# roi_heads.mask.feature_extractor.mask_fcn2.weight
# roi_heads.mask.feature_extractor.mask_fcn2.bias
# roi_heads.mask.feature_extractor.mask_fcn3.weight
# roi_heads.mask.feature_extractor.mask_fcn3.bias
# roi_heads.mask.feature_extractor.mask_fcn4.weight
# roi_heads.mask.feature_extractor.mask_fcn4.bias
# roi_heads.mask.predictor.conv5_mask.weight
# roi_heads.mask.predictor.conv5_mask.bias
# roi_heads.mask.predictor.mask_fcn_logits.weight
# roi_heads.mask.predictor.mask_fcn_logits.bias
def
fetch_param_grad
(
grad
):
save_path
=
'./param_grad/mask_fcn_logits_weight_param_diff'
+
'.'
+
str
(
grad
.
size
())
np
.
save
(
save_path
,
grad
.
detach
().
cpu
().
numpy
())
return
for
key
,
value
in
model
.
named_parameters
():
if
value
.
requires_grad
and
key
==
'roi_heads.mask.predictor.mask_fcn_logits.weight'
:
value
.
register_hook
(
fetch_param_grad
)
register_param_grad_hook
(
model
)
for
iteration
,
(
images
,
targets
,
_
)
in
enumerate
(
data_loader
,
start_iter
):
if
iteration
==
start_iter
:
...
...
@@ -247,3 +140,120 @@ def do_train(
total_time_str
,
total_training_time
/
(
max_iter
)
)
)
def
register_param_grad_hook
(
model
):
param_grad_dump_dir
=
'./param_grad'
if
not
os
.
path
.
exists
(
param_grad_dump_dir
):
os
.
makedirs
(
param_grad_dump_dir
)
def
dump_param_grad
(
dump_path
,
param_grad
):
param_grad_dump_path
=
dump_path
+
'.'
+
str
(
param_grad
.
size
())
np
.
save
(
param_grad_dump_path
,
param_grad
.
detach
().
cpu
().
numpy
())
def
get_dump_path
(
param_name
):
param_grad_name
=
param_name
.
replace
(
'.weight'
,
'.weight_diff'
)
param_grad_name
=
param_grad_name
.
replace
(
'.'
,
'-'
)
return
os
.
path
.
join
(
param_grad_dump_dir
,
param_grad_name
)
for
key
,
value
in
model
.
named_parameters
():
if
value
.
requires_grad
:
value
.
register_hook
(
partial
(
dump_param_grad
,
get_dump_path
(
key
)))
# xfjiang: save param grad
# for key, value in model.named_parameters():
# print(key)
# backbone.body.stem.conv1.weight
# backbone.body.layer1.0.downsample.0.weight
# backbone.body.layer1.0.conv1.weight
# backbone.body.layer1.0.conv2.weight
# backbone.body.layer1.0.conv3.weight
# backbone.body.layer1.1.conv1.weight
# backbone.body.layer1.1.conv2.weight
# backbone.body.layer1.1.conv3.weight
# backbone.body.layer1.2.conv1.weight
# backbone.body.layer1.2.conv2.weight
# backbone.body.layer1.2.conv3.weight
# backbone.body.layer2.0.downsample.0.weight
# backbone.body.layer2.0.conv1.weight
# backbone.body.layer2.0.conv2.weight
# backbone.body.layer2.0.conv3.weight
# backbone.body.layer2.1.conv1.weight
# backbone.body.layer2.1.conv2.weight
# backbone.body.layer2.1.conv3.weight
# backbone.body.layer2.2.conv1.weight
# backbone.body.layer2.2.conv2.weight
# backbone.body.layer2.2.conv3.weight
# backbone.body.layer2.3.conv1.weight
# backbone.body.layer2.3.conv2.weight
# backbone.body.layer2.3.conv3.weight
# backbone.body.layer3.0.downsample.0.weight
# backbone.body.layer3.0.conv1.weight
# backbone.body.layer3.0.conv2.weight
# backbone.body.layer3.0.conv3.weight
# backbone.body.layer3.1.conv1.weight
# backbone.body.layer3.1.conv2.weight
# backbone.body.layer3.1.conv3.weight
# backbone.body.layer3.2.conv1.weight
# backbone.body.layer3.2.conv2.weight
# backbone.body.layer3.2.conv3.weight
# backbone.body.layer3.3.conv1.weight
# backbone.body.layer3.3.conv2.weight
# backbone.body.layer3.3.conv3.weight
# backbone.body.layer3.4.conv1.weight
# backbone.body.layer3.4.conv2.weight
# backbone.body.layer3.4.conv3.weight
# backbone.body.layer3.5.conv1.weight
# backbone.body.layer3.5.conv2.weight
# backbone.body.layer3.5.conv3.weight
# backbone.body.layer4.0.downsample.0.weight
# backbone.body.layer4.0.conv1.weight
# backbone.body.layer4.0.conv2.weight
# backbone.body.layer4.0.conv3.weight
# backbone.body.layer4.1.conv1.weight
# backbone.body.layer4.1.conv2.weight
# backbone.body.layer4.1.conv3.weight
# backbone.body.layer4.2.conv1.weight
# backbone.body.layer4.2.conv2.weight
# backbone.body.layer4.2.conv3.weight
# backbone.fpn.fpn_inner1.weight
# backbone.fpn.fpn_inner1.bias
# backbone.fpn.fpn_layer1.weight
# backbone.fpn.fpn_layer1.bias
# backbone.fpn.fpn_inner2.weight
# backbone.fpn.fpn_inner2.bias
# backbone.fpn.fpn_layer2.weight
# backbone.fpn.fpn_layer2.bias
# backbone.fpn.fpn_inner3.weight
# backbone.fpn.fpn_inner3.bias
# backbone.fpn.fpn_layer3.weight
# backbone.fpn.fpn_layer3.bias
# backbone.fpn.fpn_inner4.weight
# backbone.fpn.fpn_inner4.bias
# backbone.fpn.fpn_layer4.weight
# backbone.fpn.fpn_layer4.bias
# rpn.head.conv.weight
# rpn.head.conv.bias
# rpn.head.cls_logits.weight
# rpn.head.cls_logits.bias
# rpn.head.bbox_pred.weight
# rpn.head.bbox_pred.bias
# roi_heads.box.feature_extractor.fc6.weight
# roi_heads.box.feature_extractor.fc6.bias
# roi_heads.box.feature_extractor.fc7.weight
# roi_heads.box.feature_extractor.fc7.bias
# roi_heads.box.predictor.cls_score.weight
# roi_heads.box.predictor.cls_score.bias
# roi_heads.box.predictor.bbox_pred.weight
# roi_heads.box.predictor.bbox_pred.bias
# roi_heads.mask.feature_extractor.mask_fcn1.weight
# roi_heads.mask.feature_extractor.mask_fcn1.bias
# roi_heads.mask.feature_extractor.mask_fcn2.weight
# roi_heads.mask.feature_extractor.mask_fcn2.bias
# roi_heads.mask.feature_extractor.mask_fcn3.weight
# roi_heads.mask.feature_extractor.mask_fcn3.bias
# roi_heads.mask.feature_extractor.mask_fcn4.weight
# roi_heads.mask.feature_extractor.mask_fcn4.bias
# roi_heads.mask.predictor.conv5_mask.weight
# roi_heads.mask.predictor.conv5_mask.bias
# roi_heads.mask.predictor.mask_fcn_logits.weight
# roi_heads.mask.predictor.mask_fcn_logits.bias
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录