Hi, I’ve traind a super-simple linear regression model:
class LinearRegressionNet(nn.Module):
    def __init__(self, in_size, out_size):
        super(LinearRegressionNet, self).__init__()
        self.layer = nn.Linear(in_size, out_size)

    def forward(self, x):
        return self.layer(x)

I’ve train this net using nn.SmoothL1Loss, for 200 epochs with batch_size=32.
The loss decreased to 1e-6, and I tried to print the predictions.
Consider my data is X and the labels are all 0, this is the prediction code:
with torch.no_grad():
    X_torch = torch.from_numpy(X.astype(np.float64).to('cuda').float())
    print(model(X_torch).mean())

the output is: 0.023 which way far from 1e-6. Then, I tried the straightforward way:
w = model.weight.data.cpu().numpy()
print(np.dot(X, w.T).mean())

the output is -0.0015, which is more convincible.
How could it be? the output should be consistent within both code chunks