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()
表示损失函数计算出来的值