李沐pytorch学习-多层感知机及其实现

这篇具有很好参考价值的文章主要介绍了李沐pytorch学习-多层感知机及其实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、多层感知机的定义

        多层感知机就是全连接层神经网络,如图1所示,其中隐含层可以有多层

李沐pytorch学习-多层感知机及其实现,深度学习,pytorch,学习,人工智能

 图1. 多层感知机结构(隐含层与输出层之间为全连接,图中少了几根连接线)

        “层”定义为输入权重(weight)与偏差(bias)的组合,如图2所示。

李沐pytorch学习-多层感知机及其实现,深度学习,pytorch,学习,人工智能

 图2. “层”的定义

二、运行原理

2.1 数据输入

Input层输入向量,为每个输入层节点的数值,即,如图3所示。

李沐pytorch学习-多层感知机及其实现,深度学习,pytorch,学习,人工智能

 图3. 多层感知机数据的输入(图中以输入层3个神经元,一个4神经元的隐含层,两个输出神经元为例,可包含多个隐含层,每层神经元个数不固定)

2.2 从输入层前向传播到隐含层

先看隐含层单个神经元的数据传输情况,如图4所示,每根连线都有一个权重(weight,),隐含层每个神经元都有一个偏置(bias,),sigmoid为激活函数,此时有

李沐pytorch学习-多层感知机及其实现,深度学习,pytorch,学习,人工智能

李沐pytorch学习-多层感知机及其实现,深度学习,pytorch,学习,人工智能

 图4. 单个神经元数据传输情况

同理有

李沐pytorch学习-多层感知机及其实现,深度学习,pytorch,学习,人工智能

将隐含层数值拼成列向量有:

李沐pytorch学习-多层感知机及其实现,深度学习,pytorch,学习,人工智能

隐含层传播到下一隐含层,隐含层传播到输出层同理。文章来源地址https://www.toymoban.com/news/detail-658879.html

三、多层感知机的代码实现

3.1 从零开始实现

import torch
from torch import nn
from d2l import torch as d2l

# 一个batch更新一次参数,例如训练集有100个数据
# batch_size = 10,则遍历训练集更新10次参数,训练集完整跑一遍称为一个 epoch
batch_size = 256

# 下载数据集
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

# 输入层神经元数,输出层神经元数,第一层隐含层神经元数
num_inputs, num_outputs, num_hiddens = 784, 10, 256

# 从输入层到第一隐含层的权重矩阵
W1 = nn.Parameter(torch.randn(
num_inputs, num_hiddens, requires_grad=True) * 0.01)

# 第一隐含层的 bias 矩阵
b1 = nn.Parameter(torch.zeros(num_hiddens, requires_grad=True))

# 从第一隐含层到输出层的权重矩阵
W2 = nn.Parameter(torch.randn(
num_hiddens, num_outputs, requires_grad=True) * 0.01)

# 输出层的bias矩阵
b2 = nn.Parameter(torch.zeros(num_outputs, requires_grad=True))

# 所有需要更新的参数
params = [W1, b1, W2, b2]

# 激活函数
def relu(X):
    a = torch.zeros_like(X)
    return torch.max(X, a)

# 网络
def net(X):
    # 将输入整理成列向量
    X = X.reshape((-1, num_inputs))

    # 从输入层到隐含层的计算过程
    H = relu(X@W1 + b1) # 这里“@”代表矩阵乘法

    # 返回从隐含层到输出层的计算结果
    return (H@W2 + b2)

# 损失函数
loss = nn.CrossEntropyLoss(reduction='none')

# epoch 数和学习率
num_epochs, lr = 10, 0.1

# 优化器,即如何训练,这里使用SGD训练
updater = torch.optim.SGD(params, lr=lr)

d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)

3.2 简洁实现

import torch
from torch import nn
from d2l import torch as d2l

net = nn.Sequential(nn.Flatten(),
    nn.Linear(784, 256),
    nn.ReLU(),
    nn.Linear(256, 10))

def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)

net.apply(init_weights);

batch_size, lr, num_epochs = 256, 0.1, 10
loss = nn.CrossEntropyLoss(reduction='none')
trainer = torch.optim.SGD(net.parameters(), lr=lr)

train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

到了这里,关于李沐pytorch学习-多层感知机及其实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI】《动手学-深度学习-PyTorch版》笔记(十四):多层感知机

    在前面介绍过,使用softmax回归来处理分类问题时,每个输出通过都一个仿射函数计算,网络结构如下,输入和输出之间为全链接层: 多层感知机就是在输入和输出中间再添加一个或多个全链接层,将中间的层称为“隐藏层”,下图为添加了一个全链接层的网络结构: 现实世

    2024年02月13日
    浏览(33)
  • PyTorch深度学习实战 | 基于多层感知机模型和随机森林模型的某地房价预测

    简介: 在现实生活中,除了分类问题外,也存在很多需要预测出具体值的回归问题,例如年龄预测、房价预测、股价预测等。相比分类问题而言,回归问题输出类型为一个连续值,如下表所示为两者的区别。在本文中,将完成房价预测这一回归问题。 ■ 分类问题与回归问题

    2023年04月12日
    浏览(38)
  • 李沐pytorch学习-卷积网络及其实现

            卷积计算过程如图1所示,即输入矩阵和核函数(filter)对应的位置相乘,然后相加得到输出对应位置的数。   图1. 卷积计算过程         该过程可以形象地从图2中展现。 图2. 二维卷积示意图         h,w为卷积核的行、列数         Y为输出矩阵,它的

    2024年02月11日
    浏览(30)
  • 深度学习-多层感知器-建立MLP实现非线性二分类-MLP实现图像多分类

    多层感知器模型框架 MLP模型框架 MLP实现多分类预测 Keras Keras是一个用Python编写的用于神经网络开发的应用接口,调用开接口可以实现神经网络、卷积神经网络、循环神经网络等常用深度学习算法的开发 特点: 集成了深度学习中各类成熟的算法,容易安装和使用,样例丰富

    2024年01月24日
    浏览(29)
  • 《动手学深度学习》——多层感知机

    参考资料: 《动手学深度学习》 隐藏层 + 激活函数能够模拟任何连续函数。 4.1.2.1 ReLu函数 ReLU ⁡ ( x ) = max ⁡ ( x , 0 ) operatorname{ReLU}(x) = max(x, 0) ReLU ( x ) = max ( x , 0 ) 当输入为负时,ReLU 的导数为 0 ;当输出为负时,ReLU 的导数为 1 。 ReLU的优势在于它的求导非常简单,要么让

    2024年02月12日
    浏览(46)
  • 李沐深度学习-d2lzh_pytorch模块实现

    2024年01月21日
    浏览(72)
  • 多层感知机与深度学习算法概述

    读研之前那会儿我们曾纠结于机器学习、深度学习、神经网络这些概念的异同。现在看来深度学习这一算法竟然容易让人和他的爸爸机器学习搞混…可见深度学习技术的影响力之大。深度学习,作为机器学习家族中目前最有价值的一种算法,正在悄悄改变着世界以及我们生活

    2024年02月09日
    浏览(50)
  • 深度学习实战(11):使用多层感知器分类器对手写数字进行分类

    1.1 什么是多层感知器(MLP)? MLP 是一种监督机器学习 (ML) 算法,属于前馈人工神经网络 [1] 类。该算法本质上是在数据上进行训练以学习函数。给定一组特征和一个目标变量(例如标签),它会学习一个用于分类或回归的非线性函数。在本文中,我们将只关注分类案例。

    2024年02月03日
    浏览(38)
  • 【深度学习】动手学深度学习(PyTorch版)李沐 2.4.3 梯度【公式推导】

      我们可以连接一个多元函数对其所有变量的偏导数,以得到该函数的 梯度 (gradient)向量。 具体而言,设函数 f : R n → R f:mathbb{R}^{n}tomathbb{R} f : R n → R 的输入是一个 n n n 维向量 x ⃗ = [ x 1 x 2 ⋅ ⋅ ⋅ x n ] vec x=begin{bmatrix} x_1\\\\x_2\\\\···\\\\x_nend{bmatrix} x = ​ x 1 ​ x 2 ​

    2024年01月17日
    浏览(39)
  • 动手学深度学习(李沐)的pytorch版本(包含代码和PDF版本)

    目录 网址(特别适合自学) 说明: 代码与PDF版 传送门 界面一览:    github上一个项目将《动手学深度学习》从mxnet改为了pytorch实现。感谢大佬们的工作。    特别说明该电子版网页是通过docsify部署生成的,详细了解点击here,自己有很多文章或者想做电子版本文档的强推

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包