Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MindSpore
mindarmour
提交
8da8f952
M
mindarmour
项目概览
MindSpore
/
mindarmour
通知
4
Star
2
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindarmour
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8da8f952
编写于
5月 23, 2020
作者:
Z
ZhidanLiu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
solve DI: [MS][MindArmour][Doc]EnsembleAdversarialDefense format is defferent with others
https://gitee.com/mindspore/dashboard/issues?id=I1GSW0
上级
b8732097
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
34 addition
and
2 deletion
+34
-2
mindarmour/defenses/adversarial_defense.py
mindarmour/defenses/adversarial_defense.py
+34
-2
未找到文件。
mindarmour/defenses/adversarial_defense.py
浏览文件 @
8da8f952
...
...
@@ -23,7 +23,7 @@ from mindspore.nn import SoftmaxCrossEntropyWithLogits
from
mindspore.nn
import
WithLossCell
,
TrainOneStepCell
from
mindarmour.utils._check_param
import
check_pair_numpy_param
,
check_model
,
\
check_param_in_range
,
check_param_type
,
check_param_multi_types
check_param_in_range
,
check_param_type
,
check_param_multi_types
from
mindarmour.defenses.defense
import
Defense
...
...
@@ -166,4 +166,36 @@ class AdversarialDefenseWithAttacks(AdversarialDefense):
return
loss
.
asnumpy
()
EnsembleAdversarialDefense
=
AdversarialDefenseWithAttacks
class
EnsembleAdversarialDefense
(
AdversarialDefenseWithAttacks
):
"""
Ensemble adversarial defense.
Args:
network (Cell): A MindSpore network to be defensed.
attacks (list[Attack]): List of attack method.
loss_fn (Functions): Loss function. Default: None.
optimizer (Cell): Optimizer used to train the network. Default: None.
bounds (tuple): Upper and lower bounds of data. In form of (clip_min,
clip_max). Default: (0.0, 1.0).
replace_ratio (float): Ratio of replacing original samples with
adversarial, which must be between 0 and 1. Default: 0.5.
Raises:
ValueError: If replace_ratio is not between 0 and 1.
Examples:
>>> net = Net()
>>> fgsm = FastGradientSignMethod(net)
>>> pgd = ProjectedGradientDescent(net)
>>> ead = EnsembleAdversarialDefense(net, [fgsm, pgd])
>>> ead.defense(inputs, labels)
"""
def
__init__
(
self
,
network
,
attacks
,
loss_fn
=
None
,
optimizer
=
None
,
bounds
=
(
0.0
,
1.0
),
replace_ratio
=
0.5
):
super
(
EnsembleAdversarialDefense
,
self
).
__init__
(
network
,
attacks
,
loss_fn
,
optimizer
,
bounds
,
replace_ratio
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录