_, predited = torch.max(outputs,1) # 此處表示返回一個元組中有兩個值,但是對第一個不感興趣
- 返回的元組的第一個元素是image data,即是最大的值;第二個元素是label,即是最大的值對應的索引。由於我們只需要label(最大值的索引),所以有 _ , predicted這樣的賦值語句,表示忽略第一個返回值,把它賦值給 _,即舍棄它。
- 第2個參數1,是 the dimension to reduce,而不是去這個dimension上面找最大的值。
上述的a是一個4 * 4的TENSOR,所以dim=1指的是消除列這個維度,如何理解它的含義呢?
如果將上面的示例代碼中的參數 keepdim=True加上,即torch.max(a,1,keepdim=True),會發現返回的結果的第一個元素,即表示最大的值的那部分,是一個size=4*1的Tensor,也就是其實它是按照行來找最大值,所以得到的結果是4行;因為只找一個最大值,所以是1列,整個的size就是 4行 1 列。參數dim=1,相當於調用了 squeeze(1)這個操作,最后就得到結果是一個size為4的vector。
注:如果dim=0,則返回每列的最大值。
所以一定不要混淆!這里的dim是指的 the dimension to reduce!並不是在這個dimension上去返回最大值!!!
用 torch.argmax()這個函數似乎更直觀,更好理解一些。