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

Pytorch-多层感知机讲解

作者头像
用户6719124
发布2019-11-17 22:35:40
8440
发布2019-11-17 22:35:40
举报

上节课讲解了单层输出感知机的求导原理和过程,本节讲解多输出感知机的求导和使用。

首先简单复习一下单层输出感知机的求导公式:

式子表示Wj0表示第j号链接节点到输出0点的输出与(O0 - t)*O0*(1-O0)的权值和输入值Xj0有关。

本节将该公式推广到具有全连接层的公式。

具有多层输出的感知机如图所示:

图中公式上的符号与单层感知机不同的是,

由此开始计算

下面以具体代码示例:

代码语言:javascript
复制
import torch
import torch.nn.functional as F

x = torch.randn(1, 10)
w = torch.randn(2, 10, requires_grad=True)
# 由于要实现多输出,w取多个值

o = torch.sigmoid(x@w.t())
# 这里进行了[1, 10]*[2, 10]T => [1, 10]*[10, 2] => [1, 2]
print(o.shape)
# 先输出一下o的shape,验证结果

输出为

代码语言:javascript
复制
torch.Size([1, 2])

下面创造一个[1, 2]的矩阵进行MSE计算

代码语言:javascript
复制
loss = F.mse_loss(torch.ones([1, 2]), o)
# 进行了o矩阵h和全为1的[1, 2]矩阵MSE计算
print(loss)

输出为

代码语言:javascript
复制
tensor(0.4827, grad_fn=<MeanBackward0>)

返回梯度信息

代码语言:javascript
复制
loss.backward()
print(w.grad)

输出为

代码语言:javascript
复制
tensor([[-0.0245,  0.0539,  0.0551,  0.0064,  0.0155,  0.0184, -0.0586,  0.0099,
          0.0106,  0.0225],
        [-0.0313,  0.0688,  0.0704,  0.0082,  0.0198,  0.0235, -0.0748,  0.0126,
          0.0135,  0.0287]])
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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