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

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第三方库


热门话题
linux Java线程创建跟踪   java可以让UNMIDEANER考虑文档过滤吗?   获取元素的java数组   java在ArrayList中搜索字符串并返回另一个关联字符串   java将现有私钥导入BKS密钥库   java proguard死代码分析给出了私有字段的假阳性   Java Web框架,用于新项目   java Gson:指定类或字段的命名策略   递归Java:保存递归本地计数器的值   java jfree图表集在图表中显示范围x值   Java:可以比较一个类吗对象是否具有泛型类型参数?   java JMS单个会话可以有多个MessageProducer吗?   java如何比较100条字符串记录,这些记录应该有3个值,即true、False或null   打开GUI实例的java检查   java如何重构具有多个切换情况的应用程序?   java如何更新Ubuntu上已经安装的IntelliJ IDEA?   java如何避免更改存档中文件的文件属性?