当前位置:   article > 正文

一个简单例子理解BCEWithLogitsLoss的作用_nn.bcewithlogitsloss() 例子

nn.bcewithlogitsloss() 例子

#BCEWithLogitsLoss研究

import torch
my_input = torch.FloatTensor([0.2,0.3,0.4])  #如果用这个固定的输入数据
loss_func = torch.nn.BCEWithLogitsLoss()

target = torch.FloatTensor([0,0,1]) 

#目标值,假定my_input 对应的是第3个分类

ww=torch.tensor([0.1,0.2,0.3]) #初始权值

#你调整target的值就知道,只有是1的地方,输出才会逐渐变大,其他会被抑制,通过反向传播,调整权值,将与1差距越来越大。

下面是用矩阵乘法实现模型正向传播。

运行以下程序你会看到第三个输出会变大

  1. import torch
  2. my_input = torch.FloatTensor([0.2,0.3,0.4]) #输入数据
  3. loss_func = torch.nn.BCEWithLogitsLoss()
  4. target = torch.FloatTensor([0,0,1]) #目标数据
  5. ww=torch.tensor([0.1,0.2,0.3])
  6. ww.requires_grad=True #ww允许求梯度
  7. for i in range(500):
  8.     pre=my_input * ww  #一个全链接
  9.     loss=loss_func(pre,target)
  10. loss.backward()#反向传播求梯度
  11. ww.data=ww.data -ww.grad*0.01#修改权值
  12. print('BCEWithLogitsLoss:',loss.item())
  13.     print("预测值:",pre)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/391944
推荐阅读
相关标签
  

闽ICP备14008679号