问题标签 [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.
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 派生错误被忽略。
python - 如何解决 what(): std::bad_alloc 错误在 GPU 上用cleverhans
在使用 keras 在 MNIST 数据上训练这个神经网络之后Input -> [[Conv2D->relu]*2 -> MaxPool2D -> Dropout]*2 -> Flatten -> Dense -> Dropout -> Output
,我正在尝试使用cleverhans 生成对抗性示例。但是我总是遇到一些内存错误:
看起来我的内存用完了,但这是我在应用程序崩溃时用于跟踪内存的脚本的日志:
这是脚本:
谁能帮我找出问题所在。谢谢。
pytorch - 为什么cleverhans pytorch教程使用log_softmax而不是logits作为输出
在生成对抗样本时,通常使用logits作为神经网络的输出,然后用交叉熵训练网络。
但是发现cleverhans的教程使用log softmax然后将pytorch模型转成tensorflow模型,最后训练模型。
我想知道是否有人知道使用 logits 代替 log_softmax 是否会有所作为?
tensorflow - Tensorflow nsl与cleverhans中使用FGSM的对抗性训练/扰动之间的区别
我已经在TensorFlow的神经结构化nsl
学习(. 但是,这个问题与那些特定的结果无关,所以我不试图在这里复制它们。cleverhans
nsl.AdversarialRegularization
cleverhans.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 两种扰动的结果可能不同的方式)。
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 提取的最新版本
cleverhans - Cleverhans 加载预训练模型
有没有办法加载预训练的模型。
我已经尝试了 load("model.joblib") 和 save("model.joblib", model) 函数,但是加载的模型在验证数据上只有大约 10% 的准确率,并且成功生成了大约 10% 的成功对抗样本。保存前模型准确率约为 99.3%,生成的对抗样本成功率约为 87%。如果我训练加载的加载模型与原始模型相同的时期数,那么我将获得预期的准确性和对抗性示例生成率。
有没有办法保存模型以便可以加载而不需要重新训练?
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)这些梯度与输入的损失梯度有何不同。
希望对此进行任何澄清/代码。
python - 在windows上安装cleverHans
我希望你们所有人都做得很好。我需要在 Windows 上为某些项目安装cleverhans,但是一旦安装它就无法访问其中的任何 python 文件,并且出现了很多错误,例如:
我希望能从你那里得到很多答案。祝你今天过得愉快。
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下运行呢?
tensorflow - 关于在 Cleverhans 中实现的 ElasticNet 算法的问题
我正在尝试使用 Cleverhans 中实现的 Elastic-Net 算法在分类任务中生成对抗样本。主要问题是我试图以某种方式使用它,以便在目标类(不同于原始类)的分类时获得更高的置信度,但我无法达到良好的结果。我试图愚弄的系统是一个在 10 个类上具有 softmax 输出的 DNN。
例如:
- 给定第 3 类的样本,我想生成第 0 类的对抗样本。
- 使用在cleverhans 的 ElasticNetMethod 中实现的默认超参数,我能够获得成功的攻击,因此分配给对抗样本的类变成了 0 类,但置信度很低(大约 30%)。尝试不同的超参数值也会发生这种情况。
- 我的目的是获得相当高的置信度(至少 90%)。
- 对于像“FGSM”或“MadryEtAl”这样的其他算法,我能够达到这个目的,创建一个循环,在该循环中应用算法,直到样本被分类为目标类,置信度大于 90%,但我不能将此迭代应用于 EAD 算法,因为在迭代的每一步它都会产生第一步生成的对抗样本,并且在接下来的迭代中它保持不变。(我知道这可能会发生,因为该算法与提到的其他两个不同,但我正在尝试找到一个解决方案来达到我的目的)。
这是我实际用来生成对抗样本的代码。
while 循环可能会生成一个样本,直到以大于 90% 的置信度达到目标类。此代码实际上适用于 FGSM 和 Madry,但使用 EAD 无限运行。
库版本:
张量流:2.2.0 Keras:2.4.3 Cleverhans:2.0.0-451ccecad450067f99c333fc53592201
任何人都可以帮助我吗?
非常感谢。