欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单单层感知机--pyTorch实现

程序员文章站 2022-07-05 08:44:03
...

简单的单层感知机梯度计算和梯度更新的pyTorch代码
单层感知机模型: 简单单层感知机--pyTorch实现
每个输入节点xi与相应的权值wi相乘,然后再l累加,最后再加上一个偏置值b,得到预测值,其数学模型如下:

简单单层感知机--pyTorch实现
对于单层感知机,其**函数是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  # 更新后的权值
相关标签: pytorch