PyTorch面试精华


1 PyTorch全局设置

    1.1  全局设置当前设备

    1.2  全局设置浮点精度

    1.3  设置控制台输出格式

2 向量与梯度之核心

    2.1  Tensor的组成与存储

    2.2  Tensor的grad属性

    2.3  Tensor内存布局的调整

    2.4  Tensor的叠加

    2.5  禁用梯度计算

    2.6  向量的保存和加载

    2.7  梯度消失与梯度爆炸

3 神经网络基础

    3.1  线性网络的参数以及初始化

    3.2  PyTorch计算图

    3.3  查看网络权重参数

    3.4  保存模型

    3.5  Adam相关面试题

    3.6  ReLu与非线性的理解

    3.7  Train模式和Eval模式

    3.8  线性网络

    3.9  双线性网络

    3.10  惰性线性层

    3.11  参数向量

    3.12  叶子节点

    3.13  自动求导与链式求导

    3.14  Dropout机制

    3.15  detach原理

    3.16  半精度训练

    3.17  Xavier初始化

    3.18  通道的深刻理解

    3.19  1x1卷积的作用

    3.20  注意力机制

    3.21  requires_grad属性

    3.22  向量的device

    3.23  tensor与numpy互换

    3.24  DataParallel用法详解

    3.25  to(device)和.cuda()的区别

    3.26  Dataset数据处理

    3.27  StepLR学习率调度器

    3.28  词嵌入的理解

    3.29  特征提取和可视化

    3.30  TensorDataset的使用

Xavier初始化

创建时间:2024-09-11 | 更新时间:2024-09-11 | 阅读次数:1022 次

1、网络权重初始化存在的问题

早期的参数初始化方法普遍随机初始化。最常用的随机初始化方法是从均值为0、方差为1的高斯分布中随机采样得到权重。需要注意的是,随机初始化所使用的值的范围可能会对网络性能产生重大影响。如果权重以过大或过小的值初始化,可能会导致训练过程收敛缓慢甚至导致网络发散。

2、Xavier Initialization诞生背景

Xavier初始化的作者Xavier Glorot,在《Understanding the difficulty of training deep feedforward neural networks》论文中提出一个洞见:激活值的方差是逐层递减的,这导致反向传播中的梯度也逐层递减。要解决梯度消失,就要避免激活值方差的衰减,最理想的情况是,每层的输出值(激活值)保持高斯分布。就这个想法,Xavier Glorot新的初始化方法,后来称之为“Xavier Initialization”

3、Xavier Initialization详细介绍

Xavier Initialization(也称为Glorot Initialization)是一种常用的神经网络权重初始化方法,旨在解决随机初始化可能导致的梯度消失或梯度爆炸问题。它的基本思想是根据上一层输入神经元的数量和下一层输出神经元的数量来确定权重初始化的范围。

Xavier Initialization的公式为: $$W_{ij} \sim N(0,\sqrt{\frac{ 2 }{n_{in}+n_{out}}})$$

其中,$W_{ij}$是链接第$i$个输入神经元和第$j$个输出神经元的权重,$n_{in}$是上一层神经元的数量,$n_{out}$是下一层神经元的数量,$N(0,\sqrt{\frac{ 2 }{n_{in}+n_{out}}})$表示均值为$0$,方差为$\sqrt{\frac{ 2 }{n_{in}+n_{out}}}$的高斯分布。

Xavier Initialization的优点是可以有效地避免梯度消失或梯度爆炸问题,并且可以加速神经网络的收敛速度。然而,它的缺点是在某些情况下可能会导致权重太小或太大,从而影响网络的性能。因此,一些改进的技术,如Kaiming Initialization和其变体已经被提出来以进一步提高随机初始化的性能。

总的来说,Xavier Initialization是一种简单而有效的神经网络权重初始化方法,尤其适用于激活函数为tanh或sigmoid的情况。通过调整初始化权重的范围,可以有效地提高网络的训练速度和性能。

4、Xavier Initialization的改进

Kaiming Initialization是一种改进的神经网络权重初始化方法,它是Xavier Initialization的一个变体。与Xavier Initialization不同,Kaiming Initialization主要用于激活函数为ReLU(Rectified Linear Unit)的神经网络。

本教程共40节,当前为第27节!