前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch-单层感知机讲解

Pytorch-单层感知机讲解

作者头像
用户6719124
发布2019-11-17 22:36:36
1.2K0
发布2019-11-17 22:36:36
举报

上节介绍了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]])

下次课对多层感知机进行讲解

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档