Несоответствие размеров для DNN для набора данных MNIST в pytorch - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужно найти способ создать модель нейронной сети и обучить ее в наборе данных MNIST. Мне нужно, чтобы было 5 слоев, по 100 нейронов в каждом. Однако, когда я пытаюсь установить это, я получаю ошибку, что есть несоответствие размера. Можете ли вы помочь? Я надеюсь, что смогу тренироваться по модели ниже:

class Mnist_DNN(nn.Module):
    def __init__(self):
        super().__init__()
        self.layer1 = nn.Linear(784, 100)
        self.layer2 = nn.Linear(100, 100)
        self.layer3 = nn.Linear(100, 100)
        self.layer4 = nn.Linear(100, 100)
        self.layer5 = nn.Linear(100, 10)

    def forward(self, xb):
        xb = xb.view(-1, 1, 28, 28)
        xb = F.relu(self.layer1(xb))
        xb = F.relu(self.layer2(xb))
        xb = F.relu(self.layer3(xb))
        xb = F.relu(self.layer4(xb))
        xb = F.relu(self.layer5(xb))
        return self.layer5(xb)

1 Ответ

0 голосов
/ 21 апреля 2019

Вы настраиваете свой слой, чтобы получить пакет 1D векторов с dim 784 (= 28 * 28).Однако в вашей функции forward вы view вводите как пакет двумерных матриц размера 28 * 28.
, попробуйте просмотреть вход как пакет одномерных сигналов:

xb = xb.view(-1, 784)
...