张量流空间变换的对抗实例

stadv的Python项目详细描述


深层神经网络已经被证明是脆弱的 adversarial examples: 输入的非常小的扰动对 预言。在这个包中,我们提供了 TensorFlow实现一种新类型的 基于局部几何变换的对抗攻击: 空间转换的对抗性例子(stadv)。

illustration-stadv-mnist.png

我们的实现遵循原始文件中的步骤:

Spatially Transformed Adversarial Examples
Chaowei Xiao, Jun-Yan Zhu, Bo Li, Warren He, Mingyan Liu, Dawn Song

如果您使用此代码,请引用以下文件 最初的实现是:

Robustness of Rotation-Equivariant Networks to Adversarial Perturbations
Beranger Dumont, Simona Maggio, Pablo Montalvo

安装

首先,确保您有installed TensorFlow(cpu或gpu版本)。

然后,要安装stadv包,只需运行

$ pip install stadv

用法

此软件包的典型用途如下:

  1. 从一个在tensorflow中实现的训练网络开始。
  2. stadv.layers.flow_st层插入图形中紧跟在 输入层。这是为了根据本地 用输入流张量参数化的可微几何扰动。
  3. 在图的末尾,计算完logits后,插入计算 对抗性损失(欺骗网络)和流量损失(强制执行 局部平滑度),例如使用stadv.losses.adv_loss和 ^分别是{tt4}$。定义最终损失 优化为两者的组合。
  4. 找出使这种损失最小化的流程,例如使用l-bfgs-b优化器 如stadv.optimization.lbfgs中提供的那样方便。

笔记本中提供了库的端到端使用示例 demo/simple_mnist.ipynbsee on GitHub)。

测试

您可以使用

$ make init
$ make test

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何访问ArrayList中对象的特定元素   反射如何检查java。朗。反思。方法返回类型是集合?   当我想使用socket发送对象时出现Java异常   eclipse是否可以修补部署到Tomcat/WildFly的Java应用程序?   java Spring:无法导入库   java从基类请求体DTO获取派生DTO   向ArrayList中添加元素时引发java异常   算法Java程序从列表中给定的数字中分组连续数<list>   java如何从类中获取一个变量到主活动?   regex Java模式,用于双引号或单引号内的数据,不包括括号内的引号   类Java OOP物理引擎类型   java在使用Camel时,如何使用Spring加载属性?   java Junit 4在@Mock中的作用域生成方法