简单单层感知机--pyTorch实现
程序员文章站
2022-07-05 08:44:03
...
简单的单层感知机梯度计算和梯度更新的pyTorch代码
单层感知机模型:
每个输入节点xi与相应的权值wi相乘,然后再l累加,最后再加上一个偏置值b,得到预测值,其数学模型如下:
对于单层感知机,其**函数是sign函数,但是他是不可导的,这里更换为sigmoid函数。
代码:
import torch
from torch.nn import functional as F
x = torch.randn(1, 10) # 输入x的特征,有十个
w = torch.randn(1, 10, requires_grad=True) # 分别与10个输入特征连接的权值,并且设置需要求导信息
b = torch.randn(1, 1, requires_grad=True)
print('init w :', w)
pre = torch.sigmoid(x @ w.t() + b) # 权值经过转置再运算,得到预测值
# print(pre.shape) # torch.Size([1, 1])
trage = torch.ones(1, 1) # 输入10个特征代表的目标值,torch.Size([1, 1])
loss = F.mse_loss(pre, trage) # loss function
# print(loss.shape) # 得到标量
loss.backward() # 反向传播
print('w.grad:', w.grad) # 反向传播得到的梯度
print('b.grad:', b.grad)
lr = 0.001 # 学习率
w = w - lr * w.grad # 更新权值
b = b - lr * b.grad
w, b # 更新后的权值
上一篇: C#中的委托解析
下一篇: C#使用Gecko实现浏览器