11.26 深度学习-初始化

深度学习 的过程是不知道用什么分类算法的 让他自己算

传入一组 数据(可以是外界可以是其他神经元) 加权求和 结果传入激活函数 激活函数输出 数据 这个数据可能需要满足一些条件

- 输入(Inputs): 代表输入数据,通常用向量表示,每个输入值对应一个权重。 x

- 权重(Weights): 每个输入数据都有一个权重,表示该输入对最终结果的重要性。w

- 偏置(Bias): 一个额外的可调参数,作用类似于线性方程中的截距,帮助调整模型的输出。b

- 加权求和: 神经元将输入乘以对应的权重后求和,再加上偏置。 x@w+b

- 激活函数(Activation Function): 用于将加权求和后的结果转换为输出结果,**引入非线性特性,使神经网络能够处理复杂的任务**。常见的激活函数有Sigmoid、ReLU(Rectified Linear Unit)、Tanh等。f(x@w+b)

#神经网络是由大量人工神经元按层次结构连接而成的计算模型。每一层神经元的输出作为下一层的输入,最终得到网络的输出。

神经网络有下面三个基础层(Layer)构建而成:

- **输入层(Input)**: 神经网络的第一层,负责接收外部数据,不进行计算。

- **隐藏层(Hidden)**: 位于输入层和输出层之间,进行特征提取和转换。隐藏层一般有多层,每一层有多个神经元。

- **输出层(Output)**: 网络的最后一层,产生最终的预测结果或分类结果

输入层 得到外界的一组信息 然后 给隐藏 隐藏层 有很多层

全连接神经网络 每一层与上一层全部链接

全连接(Fully Connected,FC)神经网络是**前馈神经网络**的一种,每一层的神经元与上一层的所有神经元全连接,常用于图像分类、文本分类等任务。

####特点

- 全连接层: 层与层之间的每个神经元都与前一层的所有神经元相连。

- 权重数量: 由于全连接的特点,权重数量较大,容易导致计算量大、模型复杂度高。

- 学习能力: 能够学习输入数据的全局特征,但对于高维数据却不擅长捕捉局部特征(如图像就需要CNN)。

#### 3.3.2 计算步骤

1. 数据传递: 输入数据经过每一层的计算,逐层传递到输出层。

2. 激活函数: 每一层的输出通过激活函数处理。

3. 损失计算: 在输出层计算预测值与真实值之间的差距,即损失函数值。

4. 反向传播(Back Propagation): 通过反向传播算法计算损失函数对每个权重的梯度,并更新权重以最小化损失。

固定值初始化是指在神经网络训练开始时,将所有权重或偏置初始化为一个特定的常数值。这种初始化方法虽然简单,但在实际深度学习应用中通常并不推荐。

使用import torch.nn as nn的init中的方法进行初始化 传入Learnr的权重 linear.weight 方法最后加_表示改原来的linear

### 1.1 全零初始化

将神经网络中的所有权重参数初始化为0。

**方法**:将所有权重初始化为零。

**缺点**:导致对称性破坏,每个神经元在每一层中都会执行相同的计算,模型无法学习。

**应用场景**:通常不用来初始化权重,但可以用来初始化偏置。

import torch.nn as nn

def zero_init():

linear = nn.Linear(in_features=6, out_features=4)

初始化权重参数

nn.init.zeros_(linear.weight)

打印权重参数

print(linear.weight)

全1初始化会导致网络中每个神经元接收到相同的输入信号,进而输出相同的值,这就无法进行学习和收敛。所以全1初始化只是一个理论上的初始化方法,但在实际神经网络的训练中并不适用。

def one_init():

linear = nn.Linear(in_features=6, out_features=4)

初始化权重参数

nn.init.ones_(linear.weight)

打印权重参数

print(linear.weight)

### 1.3 任意常数初始化

将所有参数初始化为某个非零的常数(如 0.1,-1 等)。虽然不同于全0和全1,但这种方法依然不能避免对称性破坏的问题。

def demo1():

2. 固定值参数初始化

linear = nn.Linear(in_features=6, out_features=4)

初始化权重参数

nn.init.constant_(linear.weight, 0.63)

打印权重参数

print(linear.weight)

pass

## 2. 随机初始化

**方法**:将权重初始化为随机的小值,通常从正态分布或均匀分布中采样。

**应用场景**:这是最基本的初始化方法,通过随机初始化避免对称性破坏。

def test001():

1. 均匀分布随机初始化

linear = nn.Linear(in_features=6, out_features=4)# out_features就是返回多少组W 就是输出多少个y 每个y都有一套w 就是相当于做几个线性回归 每一套w和y对应传入给一个神经元

初始化权重参数

nn.init.uniform_(linear.weight)

打印权重参数

print(linear.weight)

#@ 代码演示:正态分布初始化

def test005():

5. 正太分布初始化

linear = nn.Linear(in_features=6, out_features=4)

初始化权重参数

nn.init.normal_(linear.weight, mean=0, std=1) # 均值和标准差

打印权重参数

print(linear.weight)

Xavier 初始化 也叫做Glorot初始化。

根据输入和输出神经元的数量来选择权重的初始值。权重从以下分布中采样:

**优点**:平衡了输入和输出的方差,适合$$Sigmoid$$ 和 $$Tanh$$ 激活函数。

**应用场景**:常用于浅层网络或使用$$Sigmoid$$ 、$$Tanh$$ 激活函数的网络。

def test007():

Xavier初始化:正态分布

linear = nn.Linear(in_features=6, out_features=4)

nn.init.xavier_normal_(linear.weight)

print(linear.weight)

Xavier初始化:均匀分布

linear = nn.Linear(in_features=6, out_features=4)

nn.init.xavier_uniform_(linear.weight)

print(linear.weight)

He初始化 也叫kaiming 初始化。

**优点**:适用于$$ReLU$$ 和 $$Leaky ReLU$$ 激活函数。

**应用场景**:深度网络,尤其是使用 ReLU 激活函数时。

def test006():

He初始化:正态分布

linear = nn.Linear(in_features=6, out_features=4)

nn.init.kaiming_normal_(linear.weight, nonlinearity="relu")

print(linear.weight)

He初始化:均匀分布

linear = nn.Linear(in_features=6, out_features=4)

nn.init.kaiming_uniform_(linear.weight, nonlinearity="relu")

print(linear.weight)

if name=="main":

test001()

demo1()

相关推荐
fhf3 分钟前
感觉根本等不到35岁AI就把我裁了
前端·人工智能·程序员
m0_742848887 分钟前
PyTorch3
人工智能·深度学习
lindsayshuo19 分钟前
香橙派--安装RKMPP、x264、libdrm、FFmpeg(支持rkmpp)以及opencv(支持带rkmpp的ffmpeg)(适用于RK3588平台)
人工智能·opencv·ffmpeg
soso196823 分钟前
构建与优化数据仓库-实践指南
大数据·数据仓库·人工智能
linmoo198627 分钟前
java脚手架系列16-AI大模型集成
java·人工智能·ai·大模型·通义千问·qwen·脚手架
仙俊红31 分钟前
快速运行openMMOCR
深度学习·算法
无水先生33 分钟前
ML 系列:第 36 节 — 统计学中的抽样类型
人工智能·机器学习·概率论
Guofu_Liao34 分钟前
大语言模型---Llama不同系列的权重参数文件提取;Llama-7B权重文件提取;Llama-8B权重文件提取;主要代码功能解析
人工智能·语言模型·自然语言处理·chatgpt·aigc·llama·python3.11
剑盾云安全专家44 分钟前
AI时代的PPT革命:智能生成PPT工具为何备受青睐?
人工智能·aigc
-Max-静-1 小时前
Paddle Inference部署推理(十八)
人工智能·windows·深度学习·算法·paddle·推理 部署