I have CSV data with 2 target columns, each is continuous data that can be modeled as a regression problem. How would I structure a neural network in PyTorch with 2 output targets? What would the final layer look like? What would the loss function be? Thanks

Hi Max!

As I understand it you have it, you have input data – perhaps images,

perhaps measurements or statistics describing some object, etc. – and

for each sample, you have two target values.

You also say that your target values are continuous and can be modeled

as “regression.”

From this I understand that if your target is, say, 17.20, then a predicted

value of 17.21 would be quite good, 17.30 would be slightly less good,

while 112.00 would be quite bad. That is, closer is better, and almost

right is almost as good as exactly right.

For such a situation, the upstream part of your network would be whatever

is appropriate for processing your input data. For example, if your input

samples are images, your network might start out with a number of

convolutional layers. On the other that, if your input data is simply vectors

of “unstructured” numerical data, your network might begin immediately

with fully-connected layers.

Towards the end of your network, you would typically have just vectors of

numerical “features.” Your final layer should be fully-connected with two

outputs:

```
final_layer = torch.nn.Linear (in_features = n_features, out_features = 2)
```

This will output two numerical predictions, one each for each of the two

values in your target. You would then typically use `MSELoss`

as your loss

criterion.

Best.

K. Frank

Thanks for the reply. That’s exactly what I ended up doing. PyTorch’s MSELoss also handles vectors, so it can average the loss of both features at the same time. Nice to know it was recommended.