第一步是从公开可用的数据资源或手动用户上传获取数据。 平台通过Streamlit服务器读取数据,加载本地服务器做进一步分析。 该平台允许上传 CSV 和 MAT 格式的文件。
人工智能模型的性能在很大程度上取决于模型超参数。 网格搜索方法为每个可能的组合确定最佳超参数。 但是,它需要更多的计算过程。 超参数用于调整模型参数,例如学习率、时期和批量大小、优化器。
import torch
from torchvision import models
inceptionv3 = models.inception_v3(pretrained=True)
loss = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(alexnet.parameters(), .1, momentum=0.9, weight_decay=1e-4)
wrapped_model = PyTorchClassifier(
model=inceptionv3,
loss=loss,
optimizer=optimizer,
clip_values=(0, 1),
input_shape=(3,299,299),
nb_classes=1000,
preprocessing=((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))
)
norm = 2
attack_fgsm = FastGradientMethod(wrapped_model, norm=norm)
attack_pgd = ProjectedGradientDescent(wrapped_model, norm=norm, verbose=True)
attack_df = DeepFool(wrapped_model, max_iter=1000, verbose=True)
attack_cw = CarliniL2Method(wrapped_model, max_iter=1000, verbose=True)
adv_images_fgsm = attack_fgsm.generate(x = org_im_in)
adv_images_pgd = attack_pgd.generate(x = org_im_in, verbose=True)
adv_images_df = attack_df.generate(x = org_im_in, verbose=True)
adv_images_cw = attack_cw.generate(x = org_im_in, verbose=True)
我们使用 InceptionNet V3 模型作为算法生成攻击的基础。并使用 ImageNet 数据集中的真实世界图像,以及在 ImageNet 上预训练的 InceptionNet V3 的 PyTorch 模型。
此步骤的主要目标是训练所选模型,并在有和没有对抗训练的情况下衡量模型在模型准确性方面的对抗性攻击性能,即平均误差 (MAE)、均方误差 ( MSE) 和均方根误差 (RMSE)。