Pytorch中accuracy和loss的计算知识点总结

 更新时间:2019年09月10日 15:43:33   作者:嶙羽  
在本片文章里小编给大家整理的是关于Pytorch中accuracy和loss的计算相关知识点内容,有需要的朋友们可以学习下。

这几天关于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那样是样本个数,这一点非常重要。

以上就是本次介绍的全部知识点内容,感谢大家对脚本之家的支持。

相关文章

  • Python实现视频分帧的方法分享

    Python实现视频分帧的方法分享

    这篇文章主要为大家详细介绍了如何通过Python语言实现视频分帧的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起尝试一下
    2023-03-03
  • Python 26进制计算实现方法

    Python 26进制计算实现方法

    这篇文章主要介绍了Python 26进制计算实现方法,涉及Python字符串与数值计算的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • python图像处理入门(一)

    python图像处理入门(一)

    这篇文章主要介绍了python图像处理入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • python关于逆序输出留空格的方法解读

    python关于逆序输出留空格的方法解读

    这篇文章主要介绍了python关于逆序输出留空格的方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • PyCharm 2020.2 安装详细教程

    PyCharm 2020.2 安装详细教程

    这篇文章主要介绍了PyCharm 2020.2 安装详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 在TensorFlow中实现矩阵维度扩展

    在TensorFlow中实现矩阵维度扩展

    这篇文章主要介绍了在TensorFlow中实现矩阵维度扩展方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python远程开发环境部署与调试过程图解

    Python远程开发环境部署与调试过程图解

    这篇文章主要介绍了Python远程开发环境部署与调试过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • python读取测试数据的多种方式

    python读取测试数据的多种方式

    本文主要介绍了python读取测试数据的多种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 教你利用Python破解ZIP或RAR文件密码

    教你利用Python破解ZIP或RAR文件密码

    常常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道.本文详细介绍了怎么破解压缩包,需要的朋友可以参考下
    2021-05-05
  • python文件操作的简单方法总结

    python文件操作的简单方法总结

    在本篇文章里小编给大家整理的是关于python文件操作的简单方法知识点,有需要的朋友们可以学习下。
    2019-11-11

最新评论