Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
f31752d5
MegEngine
项目概览
MegEngine 天元
/
MegEngine
大约 1 年 前同步成功
通知
399
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看板
提交
f31752d5
编写于
3月 30, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(mge/module): add __repr__ method for qat and quantized module
GitOrigin-RevId: 0d78cbab9a93801c62f0c5d079ec20ccc705ff17
上级
9451a961
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
92 addition
and
0 deletion
+92
-0
imperative/python/megengine/module/qat/module.py
imperative/python/megengine/module/qat/module.py
+3
-0
imperative/python/megengine/module/quantized/module.py
imperative/python/megengine/module/quantized/module.py
+3
-0
imperative/python/test/unit/quantization/test_module.py
imperative/python/test/unit/quantization/test_module.py
+8
-0
imperative/python/test/unit/quantization/test_observer.py
imperative/python/test/unit/quantization/test_observer.py
+8
-0
imperative/python/test/unit/quantization/test_op.py
imperative/python/test/unit/quantization/test_op.py
+8
-0
imperative/python/test/unit/quantization/test_repr.py
imperative/python/test/unit/quantization/test_repr.py
+62
-0
未找到文件。
imperative/python/megengine/module/qat/module.py
浏览文件 @
f31752d5
...
...
@@ -39,6 +39,9 @@ class QATModule(Module):
self
.
weight_fake_quant
=
None
# type: FakeQuantize
self
.
act_fake_quant
=
None
# type: FakeQuantize
def
__repr__
(
self
):
return
"QAT."
+
super
().
__repr__
()
def
set_qconfig
(
self
,
qconfig
:
QConfig
):
r
"""
Set quantization related configs with ``qconfig``, including
...
...
imperative/python/megengine/module/quantized/module.py
浏览文件 @
f31752d5
...
...
@@ -22,6 +22,9 @@ class QuantizedModule(Module):
raise
ValueError
(
"quantized module only support inference."
)
return
super
().
__call__
(
*
inputs
,
**
kwargs
)
def
__repr__
(
self
):
return
"Quantized."
+
super
().
__repr__
()
@
classmethod
@
abstractmethod
def
from_qat_module
(
cls
,
qat_module
:
QATModule
):
...
...
imperative/python/test/unit/quantization/test_module.py
浏览文件 @
f31752d5
# MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
#
# Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
from
functools
import
partial
import
numpy
as
np
...
...
imperative/python/test/unit/quantization/test_observer.py
浏览文件 @
f31752d5
# MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
#
# Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import
platform
import
numpy
as
np
...
...
imperative/python/test/unit/quantization/test_op.py
浏览文件 @
f31752d5
# MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
#
# Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import
numpy
as
np
import
pytest
...
...
imperative/python/test/unit/quantization/test_repr.py
0 → 100644
浏览文件 @
f31752d5
# MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
#
# Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import
megengine.module
as
M
from
megengine.quantization
import
quantize
,
quantize_qat
def
test_repr
():
class
Net
(
M
.
Module
):
def
__init__
(
self
):
super
().
__init__
()
self
.
conv_bn
=
M
.
ConvBnRelu2d
(
3
,
3
,
3
)
self
.
linear
=
M
.
Linear
(
3
,
3
)
def
forward
(
self
,
x
):
return
x
net
=
Net
()
ground_truth
=
(
"Net(
\n
"
" (conv_bn): ConvBnRelu2d(
\n
"
" (conv): Conv2d(3, 3, kernel_size=(3, 3))
\n
"
" (bn): BatchNorm2d(3, eps=1e-05, momentum=0.9, affine=True, track_running_stats=True)
\n
"
" )
\n
"
" (linear): Linear(in_features=3, out_features=3, bias=True)
\n
"
")"
)
assert
net
.
__repr__
()
==
ground_truth
quantize_qat
(
net
)
ground_truth
=
(
"Net(
\n
"
" (conv_bn): QAT.ConvBnRelu2d(
\n
"
" (conv): Conv2d(3, 3, kernel_size=(3, 3))
\n
"
" (bn): BatchNorm2d(3, eps=1e-05, momentum=0.9, affine=True, track_running_stats=True)
\n
"
" (act_observer): ExponentialMovingAverageObserver()
\n
"
" (act_fake_quant): FakeQuantize()
\n
"
" (weight_observer): MinMaxObserver()
\n
"
" (weight_fake_quant): FakeQuantize()
\n
"
" )
\n
"
" (linear): QAT.Linear(
\n
"
" in_features=3, out_features=3, bias=True
\n
"
" (act_observer): ExponentialMovingAverageObserver()
\n
"
" (act_fake_quant): FakeQuantize()
\n
"
" (weight_observer): MinMaxObserver()
\n
"
" (weight_fake_quant): FakeQuantize()
\n
"
" )
\n
"
")"
)
assert
net
.
__repr__
()
==
ground_truth
quantize
(
net
)
ground_truth
=
(
"Net(
\n
"
" (conv_bn): Quantized.ConvBnRelu2d(3, 3, kernel_size=(3, 3))
\n
"
" (linear): Quantized.Linear()
\n
"
")"
)
assert
net
.
__repr__
()
==
ground_truth
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录