全连接神经网络–MLP
全连接神经网络,又叫多层感知机,是一种连接方式较为简单的人工神经网络,是前馈神经网络的一种。
MLP的神经网络架构
网络架构为:
通过输入层,隐藏层,输出层三个网络层组成,其中隐藏层可以有多层。
BP传播的原理
梯度下降法
正向传播,对网络层的输出进行传播,反向传播,对输入的梯度进行传播。
输出层:
- 偏置的梯度
- 权重的梯度
- 输入的梯度
中间层:
- 偏置的梯度
- 权重的梯度
- 输入的梯度
网络层 | 下表 | 神经元数量 |
---|---|---|
输入层 | i | l |
中间层 | j | m |
输出层 | k | n |
输出层的梯度
相关函数
E:损失值
:损失函数
:输出结果
:激励函数
:输入与权值乘积与偏置的求和
:为中的一个
定义
损失函数对的偏微分
激励函数对的偏微分
输出层权重的梯度
根据微分连锁公式
: 对的偏微分
输出层偏置的梯度
根据微分连锁公式
对的偏微分
输出层的输入梯度
输出层的输入梯度=中间层的输出梯度
根据微分连锁公式
中间层的梯度
相关函数
为中间层的输出值
为激励函数
输入值与权重的乘积与偏置的和
中间层权重的梯度
为中间层的输出梯度
为激励函数的微分
定义则
中间层偏置的梯度
则
若网络层不止三层,即隐藏层不止三层,则
梯度计算公式总结
输出层
关于的求解,在使用不同的损失函数和激励函数组合时不同,其方法也是不同的,与输出层的神经元数量相同
中间层
MLP的建构
import torch
import torch.nn as nn
def self_MLP(nn.module):
def __init__(self):
super(self_MLP,self).__init__()
self.hidden = nn.Sequential(
nn.Linear(10,128); # 10个输入,第一层隐藏层为10个神经元
nn.ReLU(); # 激活函数为ReLU()函数
nn.Linear(128,64); # 第二个隐藏层为64个神经元
nn.ReLU();
nn.Linear(64,32); # 第三个隐藏层为32个神经元
nn.ReLU();
)
def forward(self,x):
x = self.hidden(x)
return x # 返回x
文章出处登录后可见!
已经登录?立即刷新