Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
91264f37
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
411
Star
4707
Fork
583
代码
文件
提交
分支
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看板
提交
91264f37
编写于
9月 13, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(traced_module): fix __getattr__ of TracedModuleBuilder
GitOrigin-RevId: 94d91d6938ac3ee50fc0d8a72e3d36031b2ef34b
上级
526c82c8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
1 deletion
+23
-1
imperative/python/megengine/traced_module/module_tracer.py
imperative/python/megengine/traced_module/module_tracer.py
+1
-1
imperative/python/megengine/traced_module/traced_module.py
imperative/python/megengine/traced_module/traced_module.py
+6
-0
imperative/python/test/unit/traced_module/test_trace_module.py
...ative/python/test/unit/traced_module/test_trace_module.py
+16
-0
未找到文件。
imperative/python/megengine/traced_module/module_tracer.py
浏览文件 @
91264f37
...
...
@@ -185,7 +185,6 @@ class PatchedFn:
class
Patcher
:
patched_fn_ids
=
set
()
_builtin_functions
=
[]
_builtin_modules
=
[
F
,
...
...
@@ -207,6 +206,7 @@ class Patcher:
]
def
__init__
(
self
,
wrap_fn
):
self
.
patched_fn_ids
=
set
()
self
.
patched_fn
=
[]
self
.
visited_frames_ids
=
set
()
self
.
wrap_fn
=
wrap_fn
...
...
imperative/python/megengine/traced_module/traced_module.py
浏览文件 @
91264f37
...
...
@@ -17,6 +17,7 @@ import re
import
weakref
from
inspect
import
getcallargs
,
getmembers
,
isclass
,
ismethod
from
itertools
import
chain
from
types
import
FunctionType
from
typing
import
Callable
,
Dict
,
Iterable
,
List
,
Optional
,
Sequence
,
Type
,
Union
from
megengine
import
tensor
...
...
@@ -1150,6 +1151,11 @@ class TracedModuleBuilder(NodeMixin):
else
:
attr
=
getattr
(
self
.
_mod
,
name
)
full_name
=
None
if
(
isinstance
(
attr
,
FunctionType
)
and
id
(
attr
)
in
active_module_tracer
().
patcher
.
patched_fn_ids
):
return
active_module_tracer
().
patcher
.
wrap_fn
(
attr
)
if
id
(
attr
)
in
active_module_tracer
().
id2name
:
full_name
=
active_module_tracer
().
id2name
[
id
(
attr
)]
...
...
imperative/python/test/unit/traced_module/test_trace_module.py
浏览文件 @
91264f37
import
numpy
as
np
import
megengine.functional
as
F
import
megengine.module
as
M
from
megengine
import
Tensor
from
megengine.traced_module
import
TracedModule
,
trace_module
from
megengine.traced_module.expr
import
CallFunction
class
MyModule1
(
M
.
Module
):
...
...
@@ -38,6 +40,15 @@ class MyModule3(M.Module):
return
y
class
MyModule4
(
M
.
Module
):
def
__init__
(
self
):
super
().
__init__
()
self
.
add
=
F
.
add
def
forward
(
self
,
x
,
y
):
return
self
.
add
(
x
,
y
)
def
test_trace_module
():
x
=
Tensor
(
1
)
...
...
@@ -67,3 +78,8 @@ def test_trace_module():
assert
isinstance
(
tm3
.
modules
.
__dict__
[
"0"
],
M
.
Elemwise
)
assert
isinstance
(
tm3
.
modules
.
__dict__
[
"2"
],
TracedModule
)
assert
isinstance
(
tm3
.
modules
.
__dict__
[
"2"
].
a
,
M
.
Elemwise
)
m4
=
MyModule4
()
tm4
=
trace_module
(
m4
,
a
,
b
)
assert
len
(
tm4
.
graph
.
_exprs
)
==
1
assert
isinstance
(
tm4
.
graph
.
_exprs
[
0
],
CallFunction
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录