Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
48a7d333
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
403
Star
4705
Fork
582
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MegEngine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
48a7d333
编写于
3月 24, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mge/module): fix auto-naming error when there are containers in the module
GitOrigin-RevId: 6b8f0433216ad0a9454b644d2e9b0989c87836bb
上级
68f2e597
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
33 addition
and
4 deletion
+33
-4
imperative/python/megengine/module/module.py
imperative/python/megengine/module/module.py
+3
-3
imperative/python/test/unit/utils/test_dump_naming.py
imperative/python/test/unit/utils/test_dump_naming.py
+30
-1
未找到文件。
imperative/python/megengine/module/module.py
浏览文件 @
48a7d333
...
...
@@ -607,10 +607,10 @@ class Module(metaclass=ABCMeta):
def
__getattribute__
(
self
,
name
:
str
):
value
=
super
().
__getattribute__
(
name
)
if
name
==
"_
name
"
:
if
name
==
"_
_dict__
"
:
return
value
if
isinstance
(
value
,
(
Tensor
,
Module
)
):
va
lue
.
_name
=
name
for
prefix
,
variable
in
_expand_structure
(
name
,
value
):
va
riable
.
_name
=
prefix
return
value
def
__setattr__
(
self
,
name
:
str
,
value
):
...
...
imperative/python/test/unit/utils/test_dump_naming.py
浏览文件 @
48a7d333
...
...
@@ -123,6 +123,35 @@ def test_with_submodule(symbolic):
assert
ops
[
-
1
].
outputs
[
0
].
name
==
"simple.linear.ADD"
@
pytest
.
mark
.
parametrize
(
"symbolic"
,
[
False
,
True
])
def
test_with_submodule_in_container
(
symbolic
):
class
Simple
(
M
.
Module
):
def
__init__
(
self
,
name
):
super
().
__init__
()
self
.
name
=
name
self
.
l0
=
[
M
.
Linear
(
3
,
3
)
for
_
in
range
(
2
)]
self
.
l1
=
tuple
(
self
.
l0
)
self
.
l2
=
dict
(
zip
([
"l2-0"
,
"l2-1"
],
self
.
l0
))
def
forward
(
self
,
x
):
for
i
in
range
(
2
):
x
=
self
.
l0
[
i
](
x
)
x
=
self
.
l1
[
i
](
x
)
x
=
self
.
l2
[
"l2-%d"
%
i
](
x
)
return
x
m
=
Simple
(
"simple"
)
ops
=
_dump_and_load
(
m
,
symbolic
)
assert
ops
[
-
1
].
outputs
[
0
].
name
==
"simple.l2.l2-1.ADD"
assert
ops
[
-
1
].
name
==
"simple.l2.l2-1.ADD"
assert
ops
[
-
2
].
name
==
"simple.l2.l2-1.MatrixMul"
assert
ops
[
-
3
].
name
==
"simple.l1.1.ADD"
assert
ops
[
-
4
].
name
==
"simple.l1.1.MatrixMul"
assert
ops
[
-
5
].
name
==
"simple.l0.1.ADD"
assert
ops
[
-
6
].
name
==
"simple.l0.1.MatrixMul"
@
pytest
.
mark
.
parametrize
(
"symbolic"
,
[
False
,
True
])
def
test_named_submodule
(
symbolic
):
class
Simple
(
M
.
Module
):
...
...
@@ -264,4 +293,4 @@ def test_quantized_module_user_naming_param(symbolic):
(
matrix_mul_op
,)
=
[
op
for
op
in
ops
if
op
.
name
==
"simple.linear.MatrixMul"
]
for
var
in
matrix_mul_op
.
inputs
:
assert
var
.
name
in
(
"simple.quant.TypeCvt"
,
"simple.linear.user-weight"
)
#
BUG
bias' name does not meet expectations because of astype operator after quantization
#
WONTFIX:
bias' name does not meet expectations because of astype operator after quantization
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录