【发布时间】:2022-01-29 00:34:07
【问题描述】:
我正在从事与机器学习中的对抗性训练和攻击相关的任务。 我对 python/ML 的东西还很陌生,所以请多多包涵。我正在使用来自this repo 的代码,它运行良好。
我想要做的:我想使用 pyTorch 加载自定义对抗 MNIST 数据集而不是简单的 MNIST 数据集,就像他们在这里所做的那样(dataset = datasets.MNIST(root = './data', train=True , 变换 = 变换, 下载 = True))。在这些数据上,我想像现在一样运行训练程序。基本上,我想在已经创建的 MNIST 数据集的对抗样本上训练模型。
我尝试过的: 我已经尝试过this,它确实提供了关于如何使用 pytroch 加载自定义数据集的总体思路,但我一直坚持如何将其应用于我的案例。
我的问题:
- 我应该如何解决这个问题?
- 我能否获得我可以使用的 MNIST 的对抗(fgsm、ifgsm 或其他)数据,或者我必须自己创建这些数据然后加载它。如果是,那么如何?
下面是代码的相关部分:
import matplotlib.pyplot as plt
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import transforms,datasets
# In[2]:
np.random.seed(42)
torch.manual_seed(42)
# In[3]:
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.0,), (1.0,))])
dataset = datasets.MNIST(root = './data', train=True, transform = transform, download=True)
train_set, val_set = torch.utils.data.random_split(dataset, [50000, 10000])
test_set = datasets.MNIST(root = './data', train=False, transform = transform, download=True)
train_loader = torch.utils.data.DataLoader(train_set,batch_size=1,shuffle=True)
val_loader = torch.utils.data.DataLoader(val_set,batch_size=1,shuffle=True)
test_loader = torch.utils.data.DataLoader(test_set,batch_size=1,shuffle=True)
# In[4]:
print("Training data:",len(train_loader),"Validation data:",len(val_loader),"Test data: ",len(test_loader))
# In[5]:
use_cuda=True
device = torch.device("cuda" if (use_cuda and torch.cuda.is_available()) else "cpu")
# Full code link is attached.
【问题讨论】:
标签: python tensorflow machine-learning pytorch mnist