Почему обученная нейронная сеть выдает одинаковые результаты для каждой строки в последнем слое?

#python #neural-network #pytorch

#python #нейронная сеть #pytorch

Вопрос:

Я пытаюсь обучить графическую нейронную сеть с помощью pytorch, но проблема в том, что конечный результат содержит одинаковые значения для каждой строки, вот уровень моей сети

 self.linear_pre = nn.Linear(input_dim, feature_dim)  # (transform features)
self.linear_hidden = nn.Linear(input_dim, output_dim)  # -get different result
self.act = nn.ReLU()  # -get different result
self.linear_out_ = nn.Linear(output_dim, 1)  # same results for each row, example output is shown below
  

введите описание изображения здесь
в настоящее время я использую одну горячую кодировку в качестве функций для каждого графика, оптимизатора Adam и инициализации веса с использованием xavier_uniform

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

Что еще мне делать? Любая идея будет высоко оценена

Комментарии:

1. я вижу, что self.linear_out_ имеет 1 вывод… и почему вы получаете такой длинный тензор

2. helo @PrajotKuvalekar, я получаю этот вывод после изменения out_position = self.linear_out(сообщения). сжатие (-1)

3. «форма объектов перед чем-либо — torch.Size([400, 32])», затем я изменил эти объекты, используя эту команду features = «features.unsqueeze(1).repeat(1, features.shape[1], 1)», затем я передал эту форму relu, и получите этот результат ‘features после изменения формы torch.Size([400, 32, 32])’, который является входом для ‘self.linear_out’, что-то не так @PrajotKuvalekar

4. можете ли вы подробнее ответить на свой вопрос … можете ли вы опубликовать весь код? @christinamuro