Добавление линейного слоя в мой LSTM значительно увеличило потери при проверке в PyTorch - PullRequest
0 голосов
/ 04 марта 2020

Моя модель была:

    def forward(self, x, hidden=None):
        lstm_out, hidden = self.lstm(x, hidden)

        lstm_out = (lstm_out[:, :, :self.hidden_size] +
                    lstm_out[:, :, self.hidden_size:])

        out = torch.nn.SELU()(lstm_out)
        return out, hidden

Теперь она равна:

    def forward(self, x, hidden=None):
        lstm_out, hidden = self.lstm(x, hidden)
        batch_size = lstm_out.size(0)

        flattened_out = lstm_out.view(-1, self.hidden_size * 2)

        lstm_out = (lstm_out[:, :, :self.hidden_size] +
                    lstm_out[:, :, self.hidden_size:])
        out = self.linear(flattened_out)

        out = torch.nn.functional.relu(out)

        view_out = out.view(batch_size, self.seq_length, -1)

        return view_out, hidden

Я использовал, чтобы получить потерю проверки (с MSELoss) в 1000 после 2-3 эпох. Теперь с линейным слоем, он взлетел до 15000 даже после 10 эпох. С чего бы это?

1 Ответ

1 голос
/ 04 марта 2020

Вы можете попробовать понизить скорость обучения:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...