上节介绍了loss函数的定义及多种激活函数的用法,为在后续能够构建成一个全连接层的神经网络,本文继续对pytorch相关知识进行讲解。
本文介绍pytorch中的感知机
对于单层感知机模型,其激活函数为阶梯函数,不可导。
左侧为输入层,对于所有元素,上标0代表为输入层,下标1~N表示有(N-1)个元素。左面由输入层到加和符号,再到σ为一个连接层。加和符号代表了一个节点。Wij中,i代表了上一层的节点编号,j代表了这一层的节点编号。其中加和符号上的x代表了第一层上的0号单层输出感知机,经过激活函数后,得到了第1层的第0号输出值。
后面的E代表了error,将输出值与error进行了对比。
这里不要求记忆整个过程,但要求了解x、w、σ上的符号意义。
由该结果可看出,输出值只与输出节点O0和输入节点的x有关
import torch
import torch.nn.functional as F
x = torch.randn(1, 10)
# 令x具有19个特征
w = torch.randn(1, 10, requires_grad=True)
O = torch.sigmoid(x@w.t())
# 进行转置运算
# [1, 10] * [1, 10]T => [1, 10] * [10, 1] => [1, 1]
print('O:', O)
loss = F.mse_loss(torch.ones(1, 1), O)
# 将shapa为[1, 1]的计算结果与全为1的[1, 1]矩阵进行mse计算
print('loss', loss)
print('loss shape:', loss.shape)
# 得到的loss为标量
# 再对loss进行backward()
# loss具有10个标量
loss.backward()
print('w.grad:', w.grad)
输出为
O: tensor([[0.9644]], grad_fn=<SigmoidBackward>)
loss tensor(0.0013, grad_fn=<MeanBackward0>)
loss shape: torch.Size([])
w.grad: tensor([[ 0.0022, -0.0006, 0.0007, 0.0014, 0.0004, 0.0007, 0.0009, -0.0016,
0.0034, -0.0023]])
下次课对多层感知机进行讲解
本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!