Loss function
和Cost function
都是用来度量模型预测结果和实际结果之间的差距。
区别在于:
Loss function
是针对单个样本的预测误差的度量
Cost function
是针对整个数据集的预测误差的度量
Cost function
是将所有训练样本的Loss function
值相加,并取平均值得到的总体误差度量,Cost function
的目的是最小化整个数据集上的误差。可以将Cost function
看作是对模型在整个数据集上的性能评估,而Loss function
则是计算单个样本预测误差的度量。在训练过程中,通过不断调整模型参数,目标是最小化Cost function
的值,从而使模型在整个数据集上的预测误差最小化。
可以通过代码来理解一下:
model = Model()
celoss = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
for epoch in range(20):
cost_sum = 0.0
for data in dataloader:
imgs, targets = data
outputs = model(imgs)
loss = celoss(outputs, targets)
optim.zero_grad() # 1. 优化器清零
loss.backward() # 2. 反向传播求梯度
optimizer.step() # 3. 优化器调参
cost_sum = cost + loss
print(cost)