一、BCELoss 二分类损失函数

输入维度为(n, ), 输出维度为(n, )

如果说要预测二分类值为1的概率,则建议用该函数!

输入比如是3维,则每一个应该是在0——1区间内(随意通常配合sigmoid函数使用),举例如下:

import torch
import torch.nn as nn

m = nn.Sigmoid()
loss = nn.BCELoss()
input = torch.randn(3,requires_grad=True)
target = torch.empty(3).random_(2)
output = loss(m(input), target)
output.backward() input,target,output 返回值:
(tensor([-0.8728, 0.3632, -0.0547], requires_grad=True),
tensor([1., 0., 0.]),
tensor(0.9264, grad_fn=<BinaryCrossEntropyBackward>)) m(input)结果为:
tensor([0.2947, 0.5898, 0.4863]) 计算output = (1 * ln 0.2947+(1-1)*ln(1-0.2947) + 0*ln0.5898 + (1-0)*ln(1-0.5898) + 0*ln0.4863 + (1-0)*ln(1-0.4863)) / 3 = 0.9264

二、nn.CrossEntropyLoss 交叉熵损失函数

输入维度(batch_size, feature_dim)

输出维度  (batch_size, 1)

X_input = torch.tensor[ [2.8883, 0.1760, 1.0774],

          [1.1216, -0.0562, 0.0660],

          [-1.3939, -0.0967, 0.5853]]

y_target = torch.tensor([1,2,0])

loss_func = nn.CrossEntropyLoss()

loss = loss_func(X_input, y_target)

计算流程:第一,x先softmax再log,得到x_hat  第二,y转0-1编码[1,2,0] 转[[0,1,0], [0,0,1], [1,0,0]] 再与x_hat相乘,取负取平均值

思考问题:多标签的分类任务中,怎么使用损失函数呢,是拆分是多个二分类问题呢,还是不用拆分直接用BCE呢(https://blog.csdn.net/rosefun96/article/details/88058708,参考:BCE 可以应用到多标签的分类任务中)?有什么区别呢?

最新文章

  1. jQuery.grep()
  2. 理解 Nova 架构 - 每天5分钟玩转 OpenStack(23)
  3. 【终极解决方案】为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
  4. iOS 中的frame,bounds,center,transform关联
  5. Failed to start component [StandardEngine[Catalina].StandardHost[localhost....
  6. cocos2d-x一些核心概念截杀
  7. 完美解决移动Web小于12px文字居中的问题
  8. IOS基础 Day-1手动内存管理
  9. chrome jsonView插件安装
  10. SQL Server调优系列基础篇 - 联合运算符总
  11. PCB成型製程介紹
  12. svn数据仓库配置,权限配置
  13. Web Service进阶(六)SOAPBinding绑定方式异常 is not found. Have you run APT to generate them
  14. 开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)
  15. 【Python】创建xml文档
  16. 配置B类内网 和 配置A类内网
  17. mysql 禁制远程连接
  18. 设置 TIM3_CH2 的 PWM 模式,使能 TIM3 的 CH2 输出
  19. Android 全局异常处理(三)
  20. eclipse中设置在编译运行项目之前自动保存修改的文件

热门文章

  1. jquery实现回车键执行ajax
  2. 重点思维导图------redis深度历险
  3. golang的bytes.buffer
  4. vue 使用中的小技巧 (一)
  5. 如何测量Ceph OSD内存占用
  6. Flink处理函数实战之三:KeyedProcessFunction类
  7. JUC锁种类总结
  8. DDD(领域驱动设计)--战略设计
  9. mongo命令行操作
  10. 面试官:就问个Spring容器初始化和Bean对象的创建,你讲一小时了