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