亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pytorch中accuracy和loss的計算知識點總結

發布時間:2020-09-29 02:44:28 來源:腳本之家 閱讀:511 作者:嶙羽 欄目:開發技術

這幾天關于accuracy和loss的計算有一些疑惑,原來是自己還沒有弄清楚。

給出實例

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)

首先這樣一次訓練稱為一個epoch,樣本總數/batchsize是走完一個epoch所需的“步數”,相對應的,len(train_loader.dataset)也就是樣本總數,len(train_loader)就是這個步數。

那么,accuracy的計算也就是在整個train_loader的for循環中(步數),把每個mini_batch中判斷正確的個數累加起來,然后除以樣本總數就行了;

而loss的計算有講究了,首先在這里我們是計算交叉熵,關于交叉熵,也就是涉及到兩個值,一個是模型給出的logits,也就是10個類,每個類的概率分布,另一個是樣本自身的

label,在Pytorch中,只要把這兩個值輸進去就能計算交叉熵,用的方法是nn.CrossEntropyLoss,這個方法其實是計算了一個minibatch的均值了,因此累加以后需要除以的步數,也就是

minibatch的個數,而不是像accuracy那樣是樣本個數,這一點非常重要。

以上就是本次介紹的全部知識點內容,感謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

齐齐哈尔市| 南陵县| 陇西县| 西乌| 遂平县| 游戏| 澳门| 改则县| 灵璧县| 丽江市| 桐柏县| 西昌市| 建湖县| 南岸区| 蛟河市| 宁明县| 乌鲁木齐县| 阜阳市| 玉林市| 米易县| 中方县| 资兴市| 桃江县| 平和县| 邵阳市| 亳州市| 扎兰屯市| 城市| 南川市| 株洲县| 涞水县| 沙洋县| 武邑县| 江孜县| 建平县| 吴川市| 华宁县| 汪清县| 射洪县| 芮城县| 广丰县|