I have a re-trained resne50 model, the model structure is the following
model = torch.load('./model/best_finetuning_resnet50_.pth')
device = torch.device('cpu')
model = model.to(device)
model.eval()
model

ResNet(
  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  (relu): ReLU(inplace)
  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
  (layer1): Sequential(
.....
.....
  (avgpool): AvgPool2d(kernel_size=7, stride=1, padding=0)
  (fc): Linear(in_features=2048, out_features=2, bias=True)
)

The model output is a two dimensional tensor
dummy_inputs = torch.rand(1, 3, 224, 224)
outputs = model(dummy_inputs)
outputs

tensor([[ 1.2956, -1.2583]], grad_fn=<ThAddmmBackward>)

However, the final result I need is just the second element, i.e., the probability the input is labeled as one
probs = torch.softmax(outputs, dim = 1)[0][1]
probs

tensor(0.0722, grad_fn=<SelectBackward>)

I would like to make ‘probs’ to be an end-to-end model such that the output is 1 dimension probability value while the input is 3x224x224. I need to output the model as ONNX so that it can be used by the third party who can simply feed the batch_size x 3 x 224 x 224 dimension input into the model to get the batch_size x 1 dimension probability values.
torch.onnx.export(probs, dummy_inputs, "./model/best_finetuning_resnet50_.onnx", verbose=True, input_names='input_feature')

The above code does not work as this just saved a tensor Not a model.  How can I make this work?