nn.Softmax(dim=1)(outputs) 与 torch.max(probs, 1)[1]的理解

  已知在模型训练之后,会得出一个outputs,后遇到torch.max(probs, 1)[1]这行代码,不是很清楚它的意思,所以对其进行逐步调试,理清了思路:

outputs = model(inputs)
probs = nn.Softmax(dim=1)(outputs) # 得出一个(batch_size, 101)的Tensor, 指的是outputs在维度1,即每行上的元素相加等于1,即每个视频动作分别属于101个动作的概率相加等于1
# tupleProbs = torch.max(probs, 1)
# typeProbs = torch.max(probs, 1)[0]
# indexProbs = torch.max(probs, 1)[1]
# print(typeProbs)
# print(indexProbs)
preds = torch.max(probs, 1)[1]
# torch.max(probs, 1)是一个2元tuple, 两个元素都是一个(20,)维的Tensor,
# 第一个Tensor : (torch.max(probs, 1)[1])内存放的是batch_size个视频所预测的最大动作概率, 如第一轮的20个概率值[0.2508, 0.3159, ... , 0.2173, 0.2409]
# 第一个Tensor : (torch.max(probs, 1)[0])内存放的是batch_size个视频所预测的最大动作概率的下标, 即所属的类别标签,如第一轮的20个类别标签[55, 53, ... , 78, 38]

  在代码中设置三个断点:
在这里插入图片描述  可以看到torch.max(probs, 1)的值是一个2元tuple
在这里插入图片描述  分别输出typeProbs = torch.max(probs, 1)[0] 与 indexProbs = torch.max(probs, 1)[1]的值,也可以加以验证
在这里插入图片描述

你可能感兴趣的:(行为识别,算法,opencv,计算机视觉)