Pytorch-多层感知机讲解

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

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

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

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

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

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

由此开始计算

下面以具体代码示例:

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,验证结果

输出为

torch.Size([1, 2])

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

loss = F.mse_loss(torch.ones([1, 2]), o)
# 进行了o矩阵h和全为1的[1, 2]矩阵MSE计算
print(loss)

输出为

tensor(0.4827, grad_fn=<MeanBackward0>)

返回梯度信息

loss.backward()
print(w.grad)

输出为

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]])

本文分享自微信公众号 - python pytorch AI机器学习实践(gh_a7878fd5de90),作者:王某某搞AI

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pytorch-单层感知机讲解

    上节介绍了loss函数的定义及多种激活函数的用法,为在后续能够构建成一个全连接层的神经网络,本文继续对pytorch相关知识进行讲解。

    用户6719124
  • pytorch基础知识-Cross Entropy(下)

    上节课介绍了Cross Entropy 与 Enropy的区别,本节介绍Cross Entropy到底在二分类问题中是如何运算的。

    用户6719124
  • pytorch基础知识-运算(上)

    而在tensor的乘法运算中,*又分为element_wise(元素相乘) 和 martix_matmul(矩阵形式相乘)两种。而按矩阵形式相乘有三种表达形式:

    用户6719124
  • 线性代数--MIT18.06(二十九)

    的长度的平方,那么其值总是大于等于 0 的,只需要保证零空间中只有零向量,即可保证值总是 大于 0 ,即

    fireWang
  • linux:dialog表单提交示例

    dialog是个linux命令行的ui显示工具,可以在命令行显示更加友好的用户界面,系统如果没有安装需要手工安装:

    用户1148648
  • 只要 5 分钟,让你立刻拥有自己的小程序 | 知晓云

    Hello,各位知晓程序的读者们,我是犯迷糊的小羊。目前是 ifanr 的一只前端攻城狮,同时也是知晓云团队的一员。

    知晓君
  • [WPF 自定义控件]在MenuItem上使用RadioButton

    上图这种包含多选(CheckBox)和单选(RadioButton)的菜单十分常见,可是在WPF中只提供了多选的MenuItem。顺便一提,要使MenuItem...

    dino.c
  • Kali从入门到银手镯(一):安装Kali

    最近正在研究Kali Linux,一个集成了各种渗透测试工具的Linux发行版。虽然Kali也是一个功能齐全的Linux发行版,但是官方并不建议我们作为日常使用...

    乐百川
  • 基础知识 | 每日一面(78)

    读者:我的程序的屏幕提示和中间输出有时显示在屏幕上, 尤其是当我用管道向另一个程序输出的时候。

    C语言入门到精通
  • 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析

    这篇文章主要介绍Java内存区域,也是作为Java虚拟机的一些最基本的知识,理解了这些知识之后,才能更好的进行Jvm调优或者更加深入的学习,本来这些知识是晦涩难...

    好好学java

扫码关注云+社区

领取腾讯云代金券