У меня есть модель LSTM, которая получает 5 входов для прогнозирования 3 выходов: < /p>
import torch
import torch.nn as nn
class LstmModel(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(CustomLSTMModel, self).__init__()
self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)
self.fc = nn.Linear(hidden_size, output_size)
def forward(self, x):
None
< /code>
Я хочу не дать определенным вводу оказать какое -либо влияние на определенный выход. Допустим, первый вход не должен влиять на прогноз второго вывода. Другими словами, второй прогноз не должен быть функцией первого входа.class LstmModel(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(CustomLSTMModel, self).__init__()
self.lstm1 = nn.LSTM(input_size, hidden_size, batch_first=True)
self.lstm2 = nn.LSTM(input_size, hidden_size, batch_first=True)
self.lstm3 = nn.LSTM(input_size, hidden_size, batch_first=True)
self.fc1 = nn.Linear(hidden_size, output_size)
self.fc2 = nn.Linear(hidden_size, output_size)
self.fc3 = nn.Linear(hidden_size, output_size)
def forward(self, x):
# Assume x is of shape (batch_size, seq_length, input_size)
# Split inputs
input1, input2, input3, input4, input5 = x.split(1, dim=2)
# Mask inputs for each output
# For output1, exclude input2
input1_for_output1 = torch.cat((input1, input3, input4, input5), dim=2)
# For output2, exclude input3
input2_for_output2 = torch.cat((input1, input2, input4, input5), dim=2)
# For output3, exclude input4
input3_for_output3 = torch.cat((input1, input2, input3, input5), dim=2)
# Process through LSTM
_, (hn1, _) = self.lstm1(input1_for_output1)
output1 = self.fc1(hn1[-1])
_, (hn2, _) = self.lstm2(input2_for_output2)
output2 = self.fc2(hn2[-1])
_, (hn3, _) = self.lstm3(input3_for_output3)
output3 = self.fc2(hn3[-1])
return output1, output2, output3
< /code>
Проблема с этим подходом заключается в том, что для запуска модели требуется как минимум в 3 раза больше (поскольку я запускаю LSTM 3 раза, 1 для каждого вывода). Можно ли делать то, что я хочу добиться более эффективного, с одним пробежком?
Подробнее здесь: https://stackoverflow.com/questions/794 ... etworks-in
Как предотвратить влияние определенных входов на определенные результаты нейронных сетей в Pytorch? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Реализация алгоритма обучения рекуррентных нейронных сетей с несколькими входами в Keras
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как использовать F-оценку в качестве функции ошибок для обучения нейронных сетей?
Anonymous » » в форуме Python - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-