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

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在二维数组中获取所有值的组合   java如何在Heroku上运行Flyway迁移?   当Tomcat作为windows服务启动时,其他计算机无法使用java Tomcat应用程序   java SPNEGO获取用户详细信息   java多线程SaxParser解析多个xml文件   如何将十六进制字符串转换为字节。JAVA   java Android:如何在MapBox中添加自定义标记?   java如何从Android广播UDP数据包?   java驱动程序。executeScript()返回简单javascript的NullPointerException   java我们如何在网站上从系统上传文件?   java在JTextArea中剪切和粘贴   java PrimeFacesRequestContext。getCurrentInstance()。为SelectOne菜单重置   java在安卓中动态存储运行时变量   java如何检测“文本内容中发现无效字符”   Java数据结构:错误“无法访问LinkedList”   java合并排序(根据频率排序单词)   java为什么/如何将整数设置为1使while循环工作?   java Maven编译器插件抱怨“未找到SLF4J提供程序”   jakarta ee java锁定文件   java Hibernate会话。update()与update查询?