@minamisa

Как исправить код?

Мне надо составить модель нейронной сети по этой картинке: 66ae4365db705324158051.png
import torch
import torch.nn as nn

class MyModel(nn.Module):
    def __init__(self, inp1, inp2, out):
        super(MyModel, self).__init__()
        self.layer_1 = nn.Linear(inp1, inp2) 
        self.act1 = nn.ReLU() 
        self.layer_2 = nn.Linear(72, 26)  
        self.act2 = nn.ReLU()
        self.layer_3 = nn.Linear(26, out)  

    def forward(self, x, y):
        x = self.layer_1(x)
        x = self.act1(x)
        x = self.layer_2(torch.cat((x, y), dim=1)) 
        x = self.layer_2(x)
        x = self.act2(x)
        out = self.layer_3(x)
        return out


model = MyModel(inp1=124, inp2=52, out=18)

Вот мой код, но это неправильный ответ. Помогите, пожалуйста исправить
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну ты уже вот тут глупость сделал.
self.layer_1 = nn.Linear(inp1, inp2)  # Почему inp2 ?!

Первый параметр Linear - число входов слоя. Для первого слоя должно совпадать с числом значений для данного входа сети. Второй параметр - число нейронов, т.е. число выходов слоя. Должно совпадать с числом входов следующего слоя сети.
Вообще правило простое - сколько на выходе одного слоя, столько на входе следующего. Так как concatenate тупо дописывает данные одного входа в конец другого, то для него сумма длин входов должна быть равна выходу (а выход - входу следующего).

Например, в твоём случае на входе первого Linear должно быть inp1 нейронов, а на выходе - 72 - inp2 нейронов. После concatenate получится (72 - inp2) + inp2 = 72 нейрона - ровно столько, сколько на входе второго Linear.

Код исправишь сам.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы