欢迎光临散文网 会员登陆 & 注册

2023.4.7看论文and程序(还没看完)

2023-04-08 18:29 作者:一定要催我去学习  | 我要投稿

1.  [基于pytorch的resnet](http://t.csdn.cn/qL5Lz)

2.  [彻底搞懂ResNet50](http://t.csdn.cn/Qm4wZ)

3.  [pytorch读取.pth文件](http://t.csdn.cn/hLlIg)

4.  [深度学习之Resnet详解|CSDN创作打卡](http://t.csdn.cn/IRU5V)

5.  [BatchNorm2d原理、作用及其pytorch中BatchNorm2d函数的参数讲解](http://t.csdn.cn/NkpA7)

6.  [【pytorch系列】卷积操作原理解析与nn.Conv2d用法详解](http://t.csdn.cn/2XDUN)

7.  [Pytorch中apply函数作用](http://t.csdn.cn/iQXYa)

8.  [python数据分析基础知识—shape()函数的使用](http://t.csdn.cn/QnJwE)

9.  [【Pytorch】interpolate==>上下采样函数](http://t.csdn.cn/8VkZv)

10. [图像插值:最邻近(nearest)与双线性(bilinear)](http://t.csdn.cn/GCZuC)

11. [最邻近差值算法(nearest)和双线性插值算法(bilinear)](http://t.csdn.cn/hvmcp)

12. [Python中的isinstance()函数](http://t.csdn.cn/LfyeK)

13. [神经网络权重初始化代码 init.kaiming\_uniform\_和kaiming\_normal\_](http://t.csdn.cn/uXLBj)

14. [图像检测之FCOS](http://t.csdn.cn/ZOEYJ)

笔记

6-【pytorch系列】卷积操作原理解析与nn.Conv2d用法详解

关于参数 padding与padding\_mode:

(1)padding的理解:

padding参数作用:控制zero-padding的数目。

用容易理解的语言来说:padding就是在图像四周加格子。

原因:如果不对图像边缘进行填充,卷积核将无法到达图像边缘的像素,而且卷积前后图像的尺寸也会发生变化,这会造成许多麻烦。

因此现在各大深度学习框架的卷积层实现上基本都配备了padding操作,以保证图像输入输出前后的尺寸大小不变。

例如,若卷积核大小为3x3,那么就应该设定padding=1,即填充1层边缘像素;若卷积核大小为7x7,那么就应该设定padding=3,填充3层边缘像素;也就是padding大小一般设定为核大小的一半。在pytorch的卷积层定义中,默认的padding为零填充。

(2) PyTorch Conv2d中的padding\_mode四种填充模式解析

padding,即边缘填充,可以分为四类:零填充,常数填充,镜像填充,重复填充。

padding\_mode参数,可选项有4种:

9-【Pytorch】interpolate==>上下采样函数

根据给定 size 或 scale\_factor,上采样或下采样输入数据input.

    当前支持 temporal, spatial 和 volumetric 输入数据的上采样,其shape 分别为:3-D, 4-D 和 5-D.

    输入数据的形式为:mini-batch x channels x [optional depth] x [optional height] x width.

    上采样算法有:nearest, linear(3D-only), bilinear(4D-only), trilinear(5D-only).

    参数:

    - input (Tensor): input tensor

    - size (int or Tuple[int] or Tuple[int, int] or Tuple[int, int, int]):输出的 spatial 尺寸.

    - scale_factor (float or Tuple[float]): spatial 尺寸的缩放因子.

    - mode (string): 上采样算法:nearest, linear, bicubic, bilinear, trilinear, area. 默认为 nearest.

    - align_corners (bool, optional): 如果 align_corners=True,则对齐 input 和 output 的角点像素(corner pixels),保持在角点像素的值. 只会对 mode=linear, bilinear 和 trilinear 有作用. 默认是 False.

13-神经网络权重初始化代码 init.kaiming\_uniform\_和kaiming\_normal\_

为什么要初始化

神经网络要优化一个非常复杂的非线性模型,而且基本没有全局最优解,初始化在其中扮演着非常重要的作用,尤其在没有BN等技术的早期,它直接影响模型能否收敛。其本质是初始参数的选择应使得objective function便于被优化,如果随机初始化就只能看命了,但至少可以人为的选择一个较为合适的值,不一定最好但一定是稳定的。

好的初始化应该满足以下两个条件:

(1) 让神经元各层激活值不会出现饱和现象;

(2) 各层激活值也不能为0。

也就是激活值不要太大,也不要太小,应该刚刚好,当然这还只是最基本的要求。

权重初始化的目的是防止在深度神经网络的正向(前向)传播过程中层激活函数的输出损失梯度出现爆炸或消失。如果发生任何一种情况,损失梯度太大或太小,就无法有效地向后传播,并且即便可以向后传播,网络也需要花更长时间来达到收敛。然而,随机初始化就是搞一些很小的值进行初始化,实验表明大了就容易饱和,小的就激活不动。

并且Xavier等人之前发现,在学习的时候,当神经网络的层数增多时,会发现越往后面的层的激活函数的输出值几乎都接近于0,这显然是不合理的,因为网络的最后输出是要实现分类等任务,想必必须有一定的方差才能实现有差别的输出结果。因此,做实验在保证输入输出方差大致相同的时候,即满足的方差一致性的情况下,训练的收敛速度会更快,结果会更好一些。


2023.4.7看论文and程序(还没看完)的评论 (共 条)

分享到微博请遵守国家法律