I want to create a model that can give me real value in output.

My input is `nx3`

and output is in the range `-40 to -140`

that is my model

```
class Regressor(nn.Module):
def __init__(self):
super(Regressor, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size_1)
self.fc2 = nn.Linear(hidden_size_1, hidden_size_2)
self.fc3 = nn.Linear(hidden_size_2, hidden_size_3)
self.fc4 = nn.Linear(hidden_size_3, 1)
def forward(self, x):
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = F.relu(self.fc3(x))
x = self.fc4(x)
return x
```

I am using Adam Optimizer

`opt = optim.Adam(model3.parameters(), lr=0.001)`

Training sequence

```
epoch_data = []
for epoch in range(10000):
avg_acc_test = 0
avg_acc_train = 0
avg_loss_train = 0
avg_loss_test = 0
for i in range(X_train.shape[0]):
data_x = X_train_tensor[i]
data_y = y_train_tensor[i]
pred = model3(data_x)
# print(pred[:5])
loss = mse_loss(pred, data_y)
opt.zero_grad()
loss.backward()
opt.step()
pred_test = model3(X_test_tensor[0])
loss_test = mse_loss(pred_test, y_test_tensor[0])
avg_loss_train += loss.data
avg_loss_test += loss_test.data
if epoch % 50 == 0:
print('loss test {} loss train {}'.format(avg_loss_test/X_test.shape[0], avg_loss_train/X_train.shape[0] ))
```

Now the problem is my loss is not converging it always get stuck around `176`

and i tried many values of learning rate , different number of layers and different activation functions as well and different number of nodes as well, still it revolves around 176 , and yes i normalised the input data (not the output data)

What should i do please help