我是深度學(xué)習(xí)和 Pytorch 的新手,但我希望有人能幫我解決這個問題。我的數(shù)據(jù)集包含不同大小的圖像。我正在嘗試創(chuàng)建一個可以對圖像進行分類的簡單神經(jīng)網(wǎng)絡(luò)。但是,我遇到了不匹配錯誤。神經(jīng)網(wǎng)絡(luò)class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3) self.conv2 = nn.Conv2d(32, 32, 3) self.fc1 = nn.Linear(32 * 3 * 3, 200) self.fc2 = nn.Linear(200, 120) def forward(self, x): x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x = F.relu(self.fc1(x)) x = self.fc2(x) return xnet = Net()我的第一個卷積層有 1 個輸入通道,因為我將圖像轉(zhuǎn)換為灰度圖像。32 個輸出通道是一個任意決定。最后的全連接層有 120 個輸出通道,因為有 120 個不同的類。確定轉(zhuǎn)換并分配訓(xùn)練集和驗證集transform = transforms.Compose( [transforms.Grayscale(1), transforms.RandomCrop((32,32)), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])data_dir = 'dataset'full_dataset = datasets.ImageFolder(os.path.join(data_dir, 'train'), transform = transform)train_size = int(0.8 * len(full_dataset))val_size = len(full_dataset) - train_sizetrainset, valset = torch.utils.data.random_split(full_dataset, [train_size, val_size])trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)valloader = torch.utils.data.DataLoader(valset, batch_size=4, shuffle=False, num_workers=2)classes = full_dataset.classes我將圖像轉(zhuǎn)換為灰度,因為它們無論如何都是灰色的。我將圖像裁剪為 32,因為圖像具有不同的尺寸,并且我認為它們在通過神經(jīng)網(wǎng)絡(luò)時必須具有相同的尺寸。到目前為止一切正常。訓(xùn)練神經(jīng)網(wǎng)絡(luò)for epoch in range(2): # loop over the dataset multiple times running_loss = 0.0 for i, data in enumerate(trainloader, 0): # get the inputs inputs, labels = data # zero the parameter gradients optimizer.zero_grad() # forward + backward + optimize outputs = net(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step()我的代碼是此 Pytorch 教程中提供的代碼的變體。有人能告訴我我做錯了什么嗎?
為了通過神經(jīng)網(wǎng)絡(luò)運行數(shù)據(jù)集,我需要做哪些轉(zhuǎn)換?
慕桂英3389331
2021-09-02 14:58:09