问题标签 [cleverhans]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
363 浏览

cleverhans - 使用 Cleverhans 在 Keras 中实现 FGSM 时出错

我正在尝试使用 Cleverhans (FGSM) 教程生成对抗性示例Keras,但到目前为止我一直没有成功。我正在使用 keras 生成器功能来检索数据集图像。(Python 3.7)

我在工作方面相当新,Cleverhans我无法弄清楚为什么我会收到这个错误。我正在关注 Cleverhans Mnist 教程,所以我不确定为什么会出现此错误。

InvalidArgumentError:找到 2 个根错误。(0) 无效参数:断言失败:[] [Condition x >= y did not hold element-wise:x (Placeholder_539:0) = ] [[[[-59.939003 -72.779 -79.68]]]...] [ y (Cast/x:0) = ] [-1] [[node assert_greater_equal/Assert/AssertGuard/Assert (定义在/home/Downloads/cleverhans/cleverhans/utils_tf.py:749)]] (1) 无效参数:断言失败:[] [Condition x >= y did not hold element-wise:x (Placeholder_539:0) = ] [[[[-59.939003 -72.779 -79.68]]]...] [y (Cast/x: 0) = ] [-1] [[节点assert_greater_equal/Assert/AssertGuard/Assert(定义在/home/Downloads/cleverhans/cleverhans/utils_tf.py:749)]] [[GroupCrossDeviceControlEdges_0/model_1_1/conv1_pad/Pad/_3698] ] 0 次成功操作。0 派生错误被忽略。

0 投票
0 回答
170 浏览

python - 如何解决 what(): std::bad_alloc 错误在 GPU 上用cleverhans

在使用 keras 在 MNIST 数据上训练这个神经网络之后Input -> [[Conv2D->relu]*2 -> MaxPool2D -> Dropout]*2 -> Flatten -> Dense -> Dropout -> Output,我正在尝试使用cleverhans 生成对抗性示例。但是我总是遇到一些内存错误:

看起来我的内存用完了,但这是我在应用程序崩溃时用于跟踪内存的脚本的日志:

这是脚本:

谁能帮我找出问题所在。谢谢。

0 投票
1 回答
337 浏览

pytorch - 为什么cleverhans pytorch教程使用log_softmax而不是logits作为输出

在生成对抗样本时,通常使用logits作为神经网络的输出,然后用交叉熵训练网络。

但是发现cleverhans的教程使用log softmax然后将pytorch模型转成tensorflow模型,最后训练模型。

https://github.com/tensorflow/cleverhans/blob/master/cleverhans_tutorials/mnist_tutorial_pytorch.py​​#L65

我想知道是否有人知道使用 logits 代替 log_softmax 是否会有所作为?

0 投票
1 回答
187 浏览

tensorflow - Tensorflow nsl与cleverhans中使用FGSM的对抗性训练/扰动之间的区别

我已经在TensorFlow的神经结构化nsl学习(. 但是,这个问题与那些特定的结果无关,所以我不试图在这里复制它们。cleverhansnsl.AdversarialRegularizationcleverhans.attacks.FastGradientMethod

我对对抗性扰动的实现差异nsl.AdversarialRegularization.perturb_on_batch()cleverhans相同/相似功能的实现(这将是FastGradientMethod.generate().

nsl文档不是特别清楚,但它们似乎暗示nsl正在使用Goodfellow 等人的快速梯度符号方法。2014 年,这应该是在FastGradientMethod. 例如,nsl指 Goodfellow 等人。对抗性训练教程和一些函数文档中的论文。两个库都允许指定类似参数,例如epsilon控制扰动水平和控制用于约束它的规范。然而,对抗训练的性能差异让我相信这些库没有使用相同的底层实现。nsl很难解析,所以我特别好奇那里可能会发生什么。

在实现方面有什么不同,nsl.AdversarialRegularization.perturb_on_batch()哪些cleverhans.attacks.FastGradientMethod.generate()可能会导致相同输入的不同扰动?这些函数中是否还有其他差异可能导致它们的性能差异(我对速度或效率不感兴趣,但对于相同的模型、epsilon 和 norm 两种扰动的结果可能不同的方式)。

0 投票
1 回答
378 浏览

tensorflow - Resnet-50 对抗性训练,cleverhans FGSM 准确率停留在 5%

在对 resnet-50 进行对抗训练时,我遇到了一个奇怪的问题,我不确定这是逻辑错误,还是代码/库中的某个错误。我正在对抗性地训练从 Keras 加载的 resnet-50,使用来自cleverhans 的 FastGradientMethod,并期望对抗性准确度至少提高 90% 以上(可能是 99.x%)。训练算法、训练和攻击参数应该在代码中可见。正如标题中已经指出的那样,问题在于,在第一个 epoch 中训练了 39002 个训练输入中的 3000 个之后,准确率停留在 5%。(德国交通标志识别基准,GTSRB)。

在没有对抗损失函数的情况下进行训练时,在 3000 个样本后准确率不会卡住,而是在第一个 epoch 继续上升 > 0.95。

当用 lenet-5、alexnet 和 vgg19 替换网络时,代码按预期工作,并且实现了与非对抗性 categorical_corssentropy 损失函数绝对可比的精度。我也尝试过仅使用 tf-cpu 和不同版本的 tensorflow 运行该过程,结果始终相同。

获取 ResNet-50 的代码:

训练:

损失函数:

使用的版本:tf+tf-gpu:1.14.0 keras:2.3.1cleverhans:> 3.0.1 - 从 github 提取的最新版本

0 投票
1 回答
60 浏览

cleverhans - Cleverhans 加载预训练模型

有没有办法加载预训练的模型。

我已经尝试了 load("model.joblib") 和 save("model.joblib", model) 函数,但是加载的模型在验证数据上只有大约 10% 的准确率,并且成功生成了大约 10% 的成功对抗样本。保存前模型准确率约为 99.3%,生成的对抗样本成功率约为 87%。如果我训练加载的加载模型与原始模型相同的时期数,那么我将获得预期的准确性和对抗性示例生成率。

有没有办法保存模型以便可以加载而不需要重新训练?

0 投票
0 回答
60 浏览

tensorflow - 每个输出相对于输入的梯度 - logits 或 softmax 输出?

我有一个带有 2 个输出的图像分类器。我正在尝试检查图像中最重要的像素,如果受到干扰可能会影响模型输出(对模型输出影响最大的像素)。

我的最后一层如下:

所以模型有 2 个输出 y1,y2。对于输入图像 x=x0,我正在尝试计算 dy1/dx|x=x0, dy2/dx|x=x0

我有以下问题:

a)我可以通过使用 softmax 输出来计算梯度,还是应该使用模型的 logits。

b) 现在对于图像 x0,它的预测是 y1(即 y1 > y2)。计算梯度后,我得到两个向量(与输入图像大小相同)对应于 dy1/dx|x=x0 和 dy2/dx|x=x0。我如何使用这些来识别对模型输出影响最大的像素(即使模型输出类的数量大于 2 也能工作)

c)这些梯度与输入的损失梯度有何不同。

希望对此进行任何澄清/代码。

0 投票
1 回答
425 浏览

python - 在windows上安装cleverHans

我希望你们所有人都做得很好。我需要在 Windows 上为某些项目安装cleverhans,但是一旦安装它就无法访问其中的任何 python 文件,并且出现了很多错误,例如:

我希望能从你那里得到很多答案。祝你今天过得愉快。

0 投票
0 回答
183 浏览

tensorflow2.0 - 使用cleverhans的master分支和TF2.2

在拉取请求中,我看到 master 分支具有适用于 TF2 的代码。我正在研究如何使用它们。我使用带有 python 3.7.7 和 tf 2.2 的 conda env。然后我从 gihub celverhans 中提取了 master 分支。但是,当我尝试运行时mnist_tutorial_tfe.py,出现以下错误。

如何在 TF2 中使用cleverhans?似乎相关代码在cleverhans/future 目录下。但是如何让这些官方的例子在TF2下运行呢?

0 投票
1 回答
52 浏览

tensorflow - 关于在 Cleverhans 中实现的 ElasticNet 算法的问题

我正在尝试使用 Cleverhans 中实现的 Elastic-Net 算法在分类任务中生成对抗样本。主要问题是我试图以某种方式使用它,以便在目标类(不同于原始类)的分类时获得更高的置信度,但我无法达到良好的结果。我试图愚弄的系统是一个在 10 个类上具有 softmax 输出的 DNN。

例如:

  1. 给定第 3 类的样本,我想生成第 0 类的对抗样本。
  2. 使用在cleverhans 的 ElasticNetMethod 中实现的默认超参数,我能够获得成功的攻击,因此分配给对抗样本的类变成了 0 类,但置信度很低(大约 30%)。尝试不同的超参数值也会发生这种情况。
  3. 我的目的是获得相当高的置信度(至少 90%)。
  4. 对于像“FGSM”或“MadryEtAl”这样的其他算法,我能够达到这个目的,创建一个循环,在该循环中应用算法,直到样本被分类为目标类,置信度大于 90%,但我不能将此迭代应用于 EAD 算法,因为在迭代的每一步它都会产生第一步生成的对抗样本,并且在接下来的迭代中它保持不变。(我知道这可能会发生,因为该算法与提到的其他两个不同,但我正在尝试找到一个解决方案来达到我的目的)。

这是我实际用来生成对抗样本的代码。

while 循环可能会生成一个样本,直到以大于 90% 的置信度达到目标类。此代码实际上适用于 FGSM 和 Madry,但使用 EAD 无限运行。

库版本:

张量流:2.2.0 Keras:2.4.3 Cleverhans:2.0.0-451ccecad450067f99c333fc53592201

任何人都可以帮助我吗?

非常感谢。