pytorch nn.BCELoss()详解

官方链接看这里

由于中文版的挂了,这里先放英文版的
这里讲的是默认对一个batch里面的数据做二元交叉熵并且求平均。
在这里插入图片描述

参数说明

  1. weight: 给每个batch元素的权重,一般没用
  2. size_average: 默认为True
  3. reduce: True/False 默认为True,对每个minibatch做
  4. reduction: 用的比较多的是这个,若用了2.3可能导致4失效。

在这里插入图片描述

shape描述

input与target都是一样的size
在这里插入图片描述

官方实例

>>> 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()

运行结果

import torch.nn as nn
m = nn.Sigmoid()
loss = nn.BCELoss()
input = torch.randn(3, requires_grad=True)
input
Out[21]: tensor([-0.6212, -0.9684,  0.6923], requires_grad=True)
target = torch.empty(3)
target
Out[23]: tensor([-1.5901e-30,  4.5907e-41,  0.0000e+00])
target = target.random_(2)
target
Out[25]: tensor([1., 0., 1.])
output = loss(m(input), target)
output
Out[27]: tensor(0.5929, grad_fn=<BinaryCrossEntropyBackward>)
发布了75 篇原创文章 · 获赞 28 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43914889/article/details/104664945