Pytorch中accuracy和loss的計(jì)算知識點(diǎn)總結(jié)
這幾天關(guān)于accuracy和loss的計(jì)算有一些疑惑,原來是自己還沒有弄清楚。
給出實(shí)例
def train(train_loader, model, criteon, optimizer, epoch):
train_loss = 0
train_acc = 0
num_correct= 0
for step, (x,y) in enumerate(train_loader):
# x: [b, 3, 224, 224], y: [b]
x, y = x.to(device), y.to(device)
model.train()
logits = model(x)
loss = criteon(logits, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
train_loss += float(loss.item())
train_losses.append(train_loss)
pred = logits.argmax(dim=1)
num_correct += torch.eq(pred, y).sum().float().item()
logger.info("Train Epoch: {}\t Loss: {:.6f}\t Acc: {:.6f}".format(epoch,train_loss/len(train_loader),num_correct/len(train_loader.dataset)))
return num_correct/len(train_loader.dataset), train_loss/len(train_loader)
首先這樣一次訓(xùn)練稱為一個epoch,樣本總數(shù)/batchsize是走完一個epoch所需的“步數(shù)”,相對應(yīng)的,len(train_loader.dataset)也就是樣本總數(shù),len(train_loader)就是這個步數(shù)。
那么,accuracy的計(jì)算也就是在整個train_loader的for循環(huán)中(步數(shù)),把每個mini_batch中判斷正確的個數(shù)累加起來,然后除以樣本總數(shù)就行了;
而loss的計(jì)算有講究了,首先在這里我們是計(jì)算交叉熵,關(guān)于交叉熵,也就是涉及到兩個值,一個是模型給出的logits,也就是10個類,每個類的概率分布,另一個是樣本自身的
label,在Pytorch中,只要把這兩個值輸進(jìn)去就能計(jì)算交叉熵,用的方法是nn.CrossEntropyLoss,這個方法其實(shí)是計(jì)算了一個minibatch的均值了,因此累加以后需要除以的步數(shù),也就是
minibatch的個數(shù),而不是像accuracy那樣是樣本個數(shù),這一點(diǎn)非常重要。
以上就是本次介紹的全部知識點(diǎn)內(nèi)容,感謝大家對腳本之家的支持。
相關(guān)文章
Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的代碼實(shí)例
今天小編就為大家分享一篇關(guān)于Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的代碼實(shí)例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
python實(shí)現(xiàn)socket+threading處理多連接的方法
今天小編就為大家分享一篇python實(shí)現(xiàn)socket+threading處理多連接的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python 實(shí)現(xiàn)保存最新的三份文件,其余的都刪掉
今天小編就為大家分享一篇python 實(shí)現(xiàn)保存最新的三份文件,其余的都刪掉,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python在回調(diào)函數(shù)中獲取返回值的方法
今天小編就為大家分享一篇python在回調(diào)函數(shù)中獲取返回值的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
用pyqt5 給按鈕設(shè)置圖標(biāo)和css樣式的方法
今天小編就為大家分享一篇用pyqt5 給按鈕設(shè)置圖標(biāo)和css樣式的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Pytorch矩陣乘法(torch.mul() 、 torch.mm() 和torch.m
在深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的世界里,矩陣乘法是一項(xiàng)至關(guān)重要的操作,本文主要介紹了Pytorch矩陣乘法,包含了torch.mul() 、 torch.mm() 和torch.matmul()的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03

