• 【DeepLearning】【PyTorch 】PyTorch 损失函数封装中 size_average、reduce 和 reduction 三个参数的意义


    本文主要说明 PyTorch 损失函数封装中 size_average、reduce 和 reduction 三个参数的意义.

    PyTorch 中提供损失函数的 类封装 torch.nn.modules.loss 和 函数封装 torch.nn.functional. 他们有 size_average、size_average、reduction 三个参数,这三个参数理解起来有些复杂,做以下纪录.

    • size_average (布尔类型, 可选参数)
      已过时(Deprecated)(见 reduction). 一般地,losses 损失函数值为 batch 中对所有 loss 元素的平均值. 这里注意,对有些类型的损失函数,在单个训练样本中存在多个元素. 如果 size_average 域设为 False,losses 损失函数值为 minibatch 中对所有 loss 元素的求和. 当 reduce 设为 False 时,忽略 size_average 域. 缺省为:True.

    • reduce (布尔类型, 可选参数)
      已过时(Deprecated)(见 reduction). 一般地,losses 损失函数值为 minibatch 中对所有 loss 张量元素的平均值或求和,这取决于 size_average 域的设置. 当 reduce 为 False,返回 batch 中每个样本的 loss 值,并忽略 size_average. 缺省为:True.

    • reduction (字符串类型, 可选参数) ’
      确定对 loss 输出结果应用 reduction 的类型: ‘none’ | ‘mean’ | ‘sum’ . 注意,size_average 和 reduce 将在后续版本中被弃用(being deprecated),但与此同时,这两个参数的设置将覆盖 reduction. 缺省为:‘mean’.

      • ‘none’:无 reduction 被应用.
      • ‘mean’:对输出结果求和并除以输出结果张量中的元素个数.
      • ‘sum’:对输出结果求和.

    以上内容翻译自 PyTorch 官方文档,但是并不易于理解. 简单来说:

    reduce 决定是求整个 batch 的 loss 值,还是求 batch 中每个 sample 的 loss 值. 默认为 True 求整个 batch 的 loss 值.

    size_average 决定 loss 是求平均还是求和. 默认为 True 求平均. 并且当为 False 时,忽略 reduce 的设置.

    reduction的作用等同于 size_average + reduce. ‘none’ 为求 minibatch 中每个 sample 的 loss 值. ‘mean’ 为求整个 minibatch 的 loss 值,对 minibatch 中所有 sample 的 loss 值求平均. ‘sum’ 为求整个 minibatch 的 loss 值, 对 minibatch 中所有 sample 的 loss 值求和.

  • 相关阅读:
    3.【异步通信框架】RabbitMQ
    Flutter 扒一扒图片缓存框架cached_network_image
    Transformers实战(二)快速入门文本相似度、检索式对话机器人
    Android基础第十天 | 字节跳动第四届青训营笔记
    java集合总结
    双十一报告:服饰企业借助团队管理工具飞项高效协作
    五金机电行业智能渠道商管理平台搭建,构建数字化渠道管理新模式
    Linux ARM平台开发系列讲解(PCIE) 2.13.2 PCI设备的访问方法(非桥设备)
    2019 WWW | HAN:Heterogeneous Graph Attention Network
    如何识别假爬虫?
  • 原文地址:https://blog.csdn.net/ZauberC/article/details/127754385