Задать вопрос
@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 Простой Комментировать
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну ты уже вот тут глупость сделал.
self.layer_1 = nn.Linear(inp1, inp2)  # Почему inp2 ?!

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

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

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

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽