【动手学深度学习】part10-多层感知机

依据《动手学深度学习》课程理解并复现多层感知机的代码


一、多层感知机简介

多层感知机(Multilayer Perceptron, MLP)是一种前馈人工神经网络模型,它由多个层级组成,每个层级包含多个神经元。MLP 最基本的形式包括一个输入层、一个或多个隐藏层以及一个输出层。每层中的神经元与下一层的所有神经元完全连接,形成一种“全连接”的网络结构。这种结构使得MLP能够学习输入数据与输出之间的复杂非线性关系。

主要组成部分
(1)输入层:接收原始输入数据。每个神经元代表输入数据的一个特征。
(2)隐藏层:位于输入层和输出层之间的一层或多层。这些层不直接与外部世界交互,因此称为“隐藏”层。每个隐藏层可以有任意数量的神经元,这些神经元负责提取输入数据的特征,并进行非线性变换。
(3)输出层:产生网络的最终输出。输出层的神经元数量取决于具体的应用场景,例如,在分类任务中,输出层的神经元数量通常等于类别数;在回归任务中,输出层可能只有一个神经元。

  • 用沐神的两页ppt来简述多层感知机的概念

在这里插入图片描述
在这里插入图片描述

二、多类分类问题MLP实例

  • 直接上代码
    从part8-线性规划学习到的大体框架而言:
    (0)数据筛选:直接采用“torchvision.datasets.FashionMNIST”数据集
    (1)构建模型:nn.Sequential模型由Flatten层输入,经由两个全连接层输出,输入层(向量长度=784),隐藏层(向量长度=256),输出层(向量长度=10)【784是图像(28x28)的像素展平成1维,10为图像分类数】
    (2)构建损失函数:nn.CrossEntropyLoss(reduction=‘none’),采用交叉熵作为损失函数
    (3)设置超参数:batch_size、lr、num_epochs
    (4) 迭代优化:SGD
import torch
from torch import nn
from d2l import torch as d2l

num_works = 0

'''
nn.Flatten() - 这个层的作用是将输入数据展平成一维向量。通常用于图像数据从多维(如28x28像素的图像)转换为一维(如784个元素的向量)。
整个模型通过nn.Sequential容器串联起来,按照定义的顺序执行每一层的操作。
当输入数据流经这个模型时,首先会被展平,然后传递给第一个全连接层,接着经过ReLU激活函数,最后再通过第二个全连接层产生最终的输出。
'''
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值