这是计算平均准确度的正确方法吗?
I this the correct way of computing the average accuracy?
我对编码还很陌生,对平均准确度和总体准确度感到困惑。我创建了一个函数来计算精度,然后在每个纪元结束时将此结果除以 len(dataloader)。这是计算平均准确度的正确方法吗?如果没有,有人可以解释我如何正确地做到这一点吗?
def accuracy(predictions, labels):
classes = torch.argmax(predictions, dim=1)
return torch.mean((classes == labels).float())
def train(model, optimizer, dataloader):
#Setting model to train mode
model.train()
acc = 0.0
loss = 0.0
loss_fc = nn.CrossEntropyLoss()
for i, (img, label) in enumerate(dataloader):
#source images and labels to cpu device
img, label = img.to(device), label.to(device)
y_pred = model(img)
optimizer.zero_grad()
loss = loss_fc(y_pred, label)
loss.backward()
optimizer.step()
#Update loss and accuracy
loss += loss.item()
acc += accuracy(y_pred, s_label)
loss /= len(dataloader)
acc /= len(dataloader)
不确定您所说的总体准确率和平均准确率是什么意思。通常在每个纪元结束时计算准确度。您将您的预测和实际标签传递给准确度函数,它 returns 您以小数 (0-1) 表示的正确比例。
我没有看到在训练期间计算每个时期的平均准确度有任何用处,因为该指标会受到模型学习速度的严重影响,而不是它最终能够执行的效果,例如一个需要很多 epoch 才能表现良好的模型在这个平均精度上可能比可以在更少 epoch 上收敛的模型更差。
如果您查看 scikit-learn 中的准确度得分指标,它应该可以帮助您理清头绪。
Link:
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html
希望对您有所帮助!
我对编码还很陌生,对平均准确度和总体准确度感到困惑。我创建了一个函数来计算精度,然后在每个纪元结束时将此结果除以 len(dataloader)。这是计算平均准确度的正确方法吗?如果没有,有人可以解释我如何正确地做到这一点吗?
def accuracy(predictions, labels):
classes = torch.argmax(predictions, dim=1)
return torch.mean((classes == labels).float())
def train(model, optimizer, dataloader):
#Setting model to train mode
model.train()
acc = 0.0
loss = 0.0
loss_fc = nn.CrossEntropyLoss()
for i, (img, label) in enumerate(dataloader):
#source images and labels to cpu device
img, label = img.to(device), label.to(device)
y_pred = model(img)
optimizer.zero_grad()
loss = loss_fc(y_pred, label)
loss.backward()
optimizer.step()
#Update loss and accuracy
loss += loss.item()
acc += accuracy(y_pred, s_label)
loss /= len(dataloader)
acc /= len(dataloader)
不确定您所说的总体准确率和平均准确率是什么意思。通常在每个纪元结束时计算准确度。您将您的预测和实际标签传递给准确度函数,它 returns 您以小数 (0-1) 表示的正确比例。
我没有看到在训练期间计算每个时期的平均准确度有任何用处,因为该指标会受到模型学习速度的严重影响,而不是它最终能够执行的效果,例如一个需要很多 epoch 才能表现良好的模型在这个平均精度上可能比可以在更少 epoch 上收敛的模型更差。
如果您查看 scikit-learn 中的准确度得分指标,它应该可以帮助您理清头绪。
Link: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html
希望对您有所帮助!