PyTorch: создать не полностью связанный слой / объединить вывод скрытых слоев - PullRequest
0 голосов
/ 25 октября 2018

В PyTorch я хочу создать скрытый слой, чьи нейроны не полностью связаны с выходным слоем.Я пытаюсь объединить выходные данные двух линейных слоев, но сталкиваюсь со следующей ошибкой:

RuntimeError: несоответствие размера, m1: [2 x 2], м2: [4 x 4]

мой текущий код:

class NeuralNet2(nn.Module):
    def __init__(self):
        super(NeuralNet2, self).__init__()

        self.input = nn.Linear(2, 40)
        self.hiddenLeft = nn.Linear(40, 2)
        self.hiddenRight = nn.Linear(40, 2)
        self.out = nn.Linear(4, 4)

    def forward(self, x):
        x = self.input(x)
        xLeft, xRight = torch.sigmoid(self.hiddenLeft(x)), torch.sigmoid(self.hiddenRight(x))
        x = torch.cat((xLeft, xRight))
        x = self.out(x)

        return x

Я не понимаю, почему существует несоответствие размера?Есть ли альтернативный способ реализации не полностью связанных слоев в pytorch?

1 Ответ

0 голосов
/ 26 октября 2018

Оказалось, что это простая проблема понимания с функцией конкатенации.Замена x = torch.cat((xLeft, xRight)) на x = torch.cat((xLeft, xRight), dim=1) сделала свое дело.Спасибо @ dennlinger

...