I’m new in pytorch. Sorry if my question is stupid.

I have a multiclass classification problem and for it I have a convolutional neural network that has `Linear`

layer in its last layer.

I get predictions from this model so it gives me a tensor that has n_class elements. For example:

`tensor([class_1, class_2, class_3])`

```
class CNN(nn.Module):
# Constructor
def __init__(self):
super(CNN, self).__init__()
# cnn and maxpool layers
self.cnn_ = nn.Conv2d(in_channels=1,
out_channels=conv_kernel_output_channel,
kernel_size=(filter_size, embedding_size),
stride=1,
padding=0)
self.maxpool_ = nn.MaxPool2d(kernel_size=(longest_sentence_length - filter_size + 1, 1),
stride=1,
padding=0)
# droput layer
self.drop = nn.Dropout(p = dropout_keep_prob)
# fully connected layer
self.fc1 = nn.Linear(conv_kernel_output_channel * len(filter_sizes), num_classes)
# Prediction
def forward(self, x):
# convolution layer
x1 = self.cnn_(x)
# apply activation function
x1 = torch.relu(x1)
# maxpooling layer
x1 = self.maxpool_(x1)
# flatten output
x1 = x1.view(x1.size(0), -1)
# dropout
x1 = self.drop(x1)
# fully connected layer
x1 = self.fc1(x1)
# no softmax at the end, because cross entropy loss have it implicitly
return x1
pred = CNN(x)
_, label_1 = torch.max(pred)
pred_soft = F.softmax(pred)
_, label_2 = torch.max(pred_soft )
```

**Questions:**

1- Why getting the `torch.max()`

from this prediction will give us the label, I mean why for desired label our model produce bigger values? What is the logic behind this?

2- why getting the `torch.max()`

from this prediction and from `F.softmax()`

will give use same results and why we can interpret them as same and is enough to use one of them for getting the predicted label?