torch.nn.init细节

本文详细介绍了PyTorch中torch.nn.init模块的初始化细节,特别是xavier_uniform和kaiming_uniform的区别和使用场景。默认情况下,torch对卷积层的初始化考虑的是Leaky-ReLU而非ReLU,这导致了实际初始化与预期的不同。文中还探讨了如何针对ReLU进行正确的初始化设置。
摘要由CSDN通过智能技术生成

torch.nn.init细节

毕业论文进度0/50。大晚上挂着下骑砍2想顺便写论文的,内心太抗拒没办法,在这把以前看到的一些torch里的细节记录一下吧。

Abstract

torch默认的卷积初始化针对的激活函是 s l o p e = 5 slope=\sqrt{5} slope=5 的leaky-relu,而不是relu。

常见init的种类

平时能用到的卷积的初始化一般涉及到两个名字:xavier,kaiming.两者都是基于对数据张量的variance的传播推导得出的,不同点在于kaiming的推导里考虑到了激活函数的作用。
以ReLU为例, R e L U ( x ) ReLU(x) ReLU(x)会将 x x x的负元素置0。假设x为正态分布或者均匀分布等具有对称性的分布时,ReLU正好将一半的元素置零,再经过卷积 ξ \xi ξ的传播,我们有 v a r ( ξ ( R e L U ( x ) ) ) = 1 2 v a r ( ξ ( x ) ) var(\xi(ReLU(x)))=\frac{1}{2}var(\xi(x)) var(ξ(ReLU(x)))=21var(ξ(x)).右边是xavier初始化考虑的情形。所以kaiming初始化需要在xavier初始化的基础上scale一个2.
具体的细节推导网上有很多,这里不多描述。

xavier_uniform

和torch里的代码略有不同,至少我本人从原文里看到的实现应该是:
a = 6 f i n + f o u t a=\sqrt{\frac{6}{f_{in}+f_{out}}} a=fin+fout6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值