Я создал нейронную сеть MLP, используя Tensorflow, о котором говорится ниже:
model_mlp=Sequential()
model_mlp.add(Dense(units=35, input_dim=train_X.shape[1], kernel_initializer='normal', activation='relu'))
model_mlp.add(Dense(units=86, kernel_initializer='normal', activation='relu'))
model_mlp.add(Dense(units=86, kernel_initializer='normal', activation='relu'))
model_mlp.add(Dense(units=10, kernel_initializer='normal', activation='relu'))
model_mlp.add(Dense(units=1))
Я хочу преобразовать приведенный выше код MLP с помощью pytorch. Как это сделать? Я стараюсь делать это следующим образом:
class MLP(nn.Module):
def __init__(self):
super(MLP, self).__init__()
self.fc1 = nn.Linear(train_X.shape[1],35)
self.fc2 = nn.Linear(35, 86)
self.fc3 = nn.Linear(86, 86)
self.fc4 = nn.Linear(86, 10)
self.fc5 = nn.Linear(10, 1)
def forward(self, x):
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = F.relu(self.fc3(x))
x = F.relu(self.fc4(x))
x = self.fc5(x)
return x
def predict(self, x_test):
x_test = torch.from_numpy(x_test).float()
x_test = self.forward(x_test)
return x_test.view(-1).data.numpy()
model = MLP()
Я использую один и тот же набор данных, но два кода дают два разных ответа. Код, написанный на Tensorflow, всегда дает гораздо лучшие результаты, чем код, написанный на Pytorch. Интересно, неправильный ли мой код в pytorch. Если мой написанный код в PyTorch верен, мне интересно, как объяснить различия. Я с нетерпением жду ответов.