赞
踩
#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差距越来越大。
下面是用矩阵乘法实现模型正向传播。
运行以下程序你会看到第三个输出会变大
- import torch
- my_input = torch.FloatTensor([0.2,0.3,0.4]) #输入数据
- loss_func = torch.nn.BCEWithLogitsLoss()
-
- target = torch.FloatTensor([0,0,1]) #目标数据
-
- ww=torch.tensor([0.1,0.2,0.3])
-
- ww.requires_grad=True #ww允许求梯度
-
- for i in range(500):
- pre=my_input * ww #一个全链接
-
-
- loss=loss_func(pre,target)
-
- loss.backward()#反向传播求梯度
-
- ww.data=ww.data -ww.grad*0.01#修改权值
-
- print('BCEWithLogitsLoss:',loss.item())
-
- print("预测值:",pre)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。