【MLP】多层感知机

多层感知机

神经网络是当前机器学习领域普遍所应用的,例如可利用神经网络进行图像识别、语音识别等,从而将其拓展应用于自动驾驶汽车。它是一种高度并行的信息处理系统,具有很强的自适应学习能力,不依赖于研究对象的数学模型,对被控对象的的系统参数变化及外界干扰有很好的鲁棒性,能处理复杂的多输入、多输出非线性系统,神经网络要解决的基本问题是分类问题。

真正的深度⽹络从MLP开始。最简单的深度⽹络称为多层感知机。多层感知机由多层神经元组成,每⼀层与它的上⼀层相连,从上一层接收输⼊;每一层与它的下一层相连,受到下一层的反馈(影响)。

一个单隐藏层的多层感知机

1. MLP神经网络的结构

在这里插入图片描述

最典型的MLP如上图所示,包括三层

  • 输入层(Input Layer):即输入数据(x = [x1,x2,x3])
  • 隐藏层(Hidden Layer):全连接层。即从输入到输出的映射函数(f())
  • 输出层(Output Layer):即目标(y)。

神经网络主要有三个基本要素:权重、偏置和激活函数

  • 权重:神经元之间的连接强度由权重表示,权重的大小表示可能性的大小
  • 偏置:偏置的设置是为了正确分类样本,是模型中一个重要的参数,即保证通过输入算出的输出值不能随便激活。
    在MLP中,相邻层之间是全连接的。(全连接:上一层的任何一个神经元与下一层的所有神经元都有连接)
  • 激活函数:起非线性映射的作用,其可将神经元的输出幅度限制在一定范围内,一般限制在(-1~ 1)或(0~ 1)之间。最常用的激活函数是Sigmoid函数,其可将(-∞,+∞)的数映射到(0~1)的范围内。
    在这里插入图片描述
    从上面可知下层单个神经元的值与上层所有输入之间的关系可通过如下方式表示,其它以此类推。
    在这里插入图片描述
    一个 MLP神经网络的训练和学习的流程图
    在这里插入图片描述

2.demo

## 导入包
import torch
from torch import nn
from d2l import torch as d2l
#加载数据集
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)
b1 = nn.Parameter(torch.zeros(num_hiddens, requires_grad=True))
W2 = nn.Parameter(torch.randn(
num_hiddens, num_outputs, requires_grad=True) * 0.01)
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')

## 训练
num_epochs, lr = 10, 0.1
updater = torch.optim.SGD(params, lr=lr)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)
## 测试
d2l.predict_ch3(net, test_iter)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值