深度学习笔记

常见问题

1. 训练过程中not number ,infinite 怎么产生的,怎么解决?

答:训练non 是因为过程中除零了,。 inf 是数值太大了。解决方法:调小学习率。

2. 训练过程中如果网络层输出的中间特征元素突然变成non了可能是梯度爆炸造成的

3. 为啥要初始化网络层每层的方差不变啊

神经网络设计中的另一个问题是其参数化所固有的对称性。 假设我们有一个简单的多层感知机,它有一个隐藏层和两个隐藏单元。 在这种情况下,我们可以对第一层的权重 𝐖(1)
进行重排列, 并且同样对输出层的权重进行重排列,可以获得相同的函数。 第一个隐藏单元与第二个隐藏单元没有什么特别的区别。 换句话说,我们在每一层的隐藏单元之间具有排列对称性。

假设输出层将上述两个隐藏单元的多层感知机转换为仅一个输出单元。 想象一下,如果我们将隐藏层的所有参数初始化为 𝐖(1)=𝑐, 𝑐为常量,会发生什么? 在这种情况下,在前向传播期间,两个隐藏单元采用相同的输入和参数, 产生相同的激活,该激活被送到输出单元。 在反向传播期间,根据参数 𝐖(1)对输出单元进行微分, 得到一个梯度,其元素都取相同的值。 因此,在基于梯度的迭代(例如,小批量随机梯度下降)之后, 𝐖(1)的所有元素仍然采用相同的值。 这样的迭代永远不会打破对称性,我们可能永远也无法实现网络的表达能力。 隐藏层的行为就好像只有一个单元。 请注意,虽然小批量随机梯度下降不会打破这种对称性,但暂退法正则化可以。

解决(或至少减轻)上述问题的一种方法是进行参数初始化, 优化期间的注意和适当的正则化也可以进一步提高稳定性。
通常采用Xavier初始化

在初始化时,为了避免权重值过大或过小,导致梯度消失或梯度爆炸的问题,一般会将权重值初始化为一个小的随机数,通常服从均值为 0,方差为σ² 的高斯分布或均匀分布。

在初始化隐藏层参数时,我们希望每个神经元的输出具有相似的方差,这样可以使得后续的非线性变换更加均匀地作用在神经元上,从而提高模型的表达能力。如果我们采用方差不变的初始化方法,可以保证每个神经元输出的方差大致相等。而如果我们采用方差随着输入神经元个数增加而增加的初始化方法,那么随着神经元个数的增加,输出的方差也会越来越大,从而导致网络的表达能力下降,训练速度变慢。

因此,隐藏层参数随机初始化时,我们应该采用方差不变的初始化方法,从而保证每个神经元输出的方差大致相等,提高模型的表达能力和训练效率。

4.避免梯度爆炸的方法

避免用乘法 改用加法

5.std()函数

std()函数就是初高中学的标准差

计算得出的默认标准偏差类型在 numpy 的 .std() 和 pandas 的 .std() 函数之间是不同的。
默认情况下,numpy 计算的是总体标准偏差,ddof = 0。另一方面,pandas 计算的是样本标准偏差,ddof = 1。如果我们知道所有的分数,那么我们就有了总体——因此,要使用 pandas 进行归一化处理,我们需要将“ddof”设置为 0。

6.前向传播和后向传播

前向传播(forward propagation或forward pass) 指的是:按顺序(从输入层到输出层)计算和存储神经网络中每层的结果。
反向传播(backward propagation或backpropagation)指的是计算神经网络参数梯度的方法。 简言之,该方法根据微积分中的链式规则,按相反的顺序从输出层到输入层遍历网络。 该算法存储了计算某些参数梯度时所需的任何中间变量(偏导数)。

7.隐藏层的意义

隐藏层的意义就是把输入数据的特征,抽象到另一个维度空间,来展现其更抽象化的特征,这些特征能更好的进行线性划分
多个隐藏层其实是对输入特征多层次的抽象,最终的目的就是为了更好的线性划分不同类型的数据(隐藏层的作用)。

8.将类别变量转化为伪变量内存爆炸问题

特征值是字符串,是一些离散值,转化为tensor 使用one-hot编码两个办法:1.转化为稀疏矩阵存储,2.使用bag of words把每个词拿出来

9 卷积 strde padding 还有 kernel_size这些超参数 重要程度比较

通常stride为1比较好,可以看的东西更多。计算量比较大时stride不选1,一般选2。 这三个超参数最重要得是kernel_size.
padding 是默认的, stride 取决于我们要把模型复杂度控制在什么程度。

10 .卷积核的边长一般选奇数

当然,偶数也没问题

11. 卷积层输出比输入减半是很少情况,绝大情况保持不变

12. 通过多层卷积后输出和输入相同,特征会丢失吗?

机器学习本身是一个压缩算法,丢失了大量信息。

13.输入和输出的宽高都不变的情况下,通常不改变channel,如果输入➡输出的宽高都减半了,通常,channel 通道数加倍。

14.同一层每个通道的卷积核大小一样(GoogleNet 不一样),同一通道不同层的卷积核参数是不一样的。

15.计算卷积核时,bias的有无,对结果影响大吗?bias 的作用?

有一定作用,没有也无所谓,通常要加上。

16.如果一个rgb 图像,加入深度图,需要做三维卷积,这样输入就变成了 输出输入通道x深度 x宽x高,卷积核就会变成一个五d的张量。 ?????

rgb 是3个通道 , 输入数据张量形状1x3x深度x宽x高为5d 的张量,卷积核同理。

17.高频和低频细节有什么讲究吗?

我们不要太关注,把数据丢进去让神经网络自己找出训练;有些通道会去学习高频的特征,有些通道会去学低频的特征。

18.怎么理解不识别空间信息?

1x1的卷积核只看见一个信息,没有看见周围的信息,也就是不识别空间信息。

19. 池化层性质

和卷积层层类似,都有填充和步幅
没用可学习得参数
常用的有平均池化层和最大池化层
输入通道数=输出通道数,不像卷积一样可以融合。
默认情况下,深度学习框架中的步幅与池化层窗口的大小相同。
卷积层可以缓解卷积层对数据的敏感性

20.池化层窗口是否重叠对模型训练有没有影响

现在越来越不用池化层了。
基本上没有验证池化层是否有没有影响。
如果把stride 放在卷积,池化层的作用就不那么明显了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值