【问题标题】:Problems with Linear Regresion in Pytorch. NotImplementedError [duplicate]Pytorch 中的线性回归问题。 NotImplementedError [重复]
【发布时间】:2021-08-21 04:36:37
【问题描述】:

我在训练在 pytorch 中练习逻辑回归时遇到问题。 我想使用 CIFAR10 数据集,但我无法进行训练循环,因为当我可以执行 Linnear 函数时,你收到了 NotImplementedError

我可能有不止一个错误我没有看到,因为正如我所说的我正在学习。

我把代码留在这里。

import numpy as np
import matplotlib.pyplot as plt
import torch
from torchvision import datasets, transforms
import torch.nn.functional as F
from tqdm import tqdm
import torch.nn as nn

#IMPORTING DATA
datatest = mnist_train = datasets.CIFAR10(root="./datasets",
                                         train=True,
                                         transform=transforms.ToTensor(),
                                         download=True)
datatrain = datasets.CIFAR10(root="./datasets",
                            train=False, 
                            transform=transforms.ToTensor(), 
                            download=True)

print (f'Number of CIFAR test examples {len(datatest)}')
print (f'Number of CIFAR train examples {len(datatest)}')

train_loader = torch.utils.data.DataLoader(datatrain, batch_size=100, shuffle=True)
test_loader = torch.utils.data.DataLoader(datatest, batch_size=100, shuffle=False)

data_train_iter = iter(train_loader)
images, labels = data_train_iter.next()

print("Shape of the minibatch of images: {}".format(images.shape))
print("Shape of the minibatch of labels: {}".format(labels.shape))

#n_samples, n_features = images.shape, labels.shape
#print(n_samples, n_features)

#MODEL

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear = nn.Linear(3072, 10)

    def foward(self, x):
        return self.linear(x)

#Inicializate model
model = Model()

#Criterion
criterion= nn.CrossEntropyLoss()

#Optimizer
learning_rate = 0.01
optimizer = torch.optim.SGD(model.parameters(), 
                            lr=learning_rate)
        
# Iterate through train set minibatchs 
for images, labels in tqdm(train_loader):
    # Zero out the gradients
    optimizer.zero_grad()
    
    # Forward pass
    x = images.view(-1, 32*32*3)
    y = model(x)
    loss = criterion(y, labels)
    loss.backward()
    optimizer.step()

## Testing
correct = 0
total = len(datatest)

with torch.no_grad():
    # Iterate through test set minibatchs 
    for images, labels in tqdm(test_loader):
        # Forward pass
        x = images.view(-1, 32*32*3)
        y = model(x)
        predictions = torch.argmax(y, dim=1)
        correct += torch.sum((predictions == labels).float())
    
print('Test accuracy: {}'.format(correct/total))

谢谢!

【问题讨论】:

  • 请附上错误的全文!

标签: python machine-learning pytorch


【解决方案1】:

这是由于您的 Model 类中的 forward 拼写错误造成的。你把它写成foward。请更正中的拼写

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear = nn.Linear(3072, 10)

    def forward(self, x): # You have written it as `foward`
        return self.linear(x)

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 2021-12-14
    • 2018-11-17
    • 2021-01-11
    • 2018-01-08
    • 1970-01-01
    • 2020-05-24
    • 2021-06-21
    • 2019-01-06
    相关资源
    最近更新 更多