张量流空间变换的对抗实例
stadv的Python项目详细描述
深层神经网络已经被证明是脆弱的 adversarial examples: 输入的非常小的扰动对 预言。在这个包中,我们提供了 TensorFlow实现一种新类型的 基于局部几何变换的对抗攻击: 空间转换的对抗性例子(stadv)。
我们的实现遵循原始文件中的步骤:
Spatially Transformed Adversarial ExamplesChaowei Xiao, Jun-Yan Zhu, Bo Li, Warren He, Mingyan Liu, Dawn Song
如果您使用此代码,请引用以下文件 最初的实现是:
Robustness of Rotation-Equivariant Networks to Adversarial PerturbationsBeranger Dumont, Simona Maggio, Pablo Montalvo
用法
此软件包的典型用途如下:
- 从一个在tensorflow中实现的训练网络开始。
- 将stadv.layers.flow_st层插入图形中紧跟在 输入层。这是为了根据本地 用输入流张量参数化的可微几何扰动。
- 在图的末尾,计算完logits后,插入计算 对抗性损失(欺骗网络)和流量损失(强制执行 局部平滑度),例如使用stadv.losses.adv_loss和 ^分别是{tt4}$。定义最终损失 优化为两者的组合。
- 找出使这种损失最小化的流程,例如使用l-bfgs-b优化器 如stadv.optimization.lbfgs中提供的那样方便。
笔记本中提供了库的端到端使用示例 demo/simple_mnist.ipynb(see on GitHub)。
文档
测试
您可以使用
$ make init
$ make test