batchsize用法 平均准確度和平均損失,以及實現前向運算的矩陣乘法方式,loss怎么反向傳播的
待辦
使用batchsize可以把矩陣縮小,采用矩陣乘法的形式可以一次計算多個經過神經網絡的結果,然后通過交叉熵進行計算總的損失得到結果。
所以前向的理解主要是矩陣乘法,對應左行右列
的相乘得到x1w1+x2w2+x3w3+....的一個結果,左側對應的行數就是總的batchsize數,
這也是分批次計算的要點
反向傳播是提前生成動態圖,所以只計算一次loss就能把誤差反向傳播到各個位置導數上。不用知道x的值就可以。
在循環里的寫法,idx就是每個mini-batch批次的分組號,然后包含這個mini-batch批次的訓練數據和結果數據,
顯示for循環大的批次遍歷epoch,接着的for 循環里mini-batch,loader數據分組進行遍歷,計算本批次的准確率的時候需要先計算總的一個大批次中的各個小批次准確個數
獲取每個大批次各個小minibatch的總的正確數和總的損失數
test_loss = 0
correct = 0
for data1, target in test_loader:
data1 = data1.view(-1, 28 * 28)
logits = forward(data1)
test_loss += criteon(logits, target).item()
pred = logits.data.max(1)[1]
correct += pred.eq(target.data).sum()
根據一個大批次中的各個小批次正確數和損失數總和計算一個大批次的平均准確率和平均損失
test_loss /= len(test_loader.dataset)
print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(
test_loss, correct, len(test_loader.dataset),
100. * correct / len(test_loader.dataset)))
loss.item()
表示損失函數計算出來的值