pytorch使用记录(二) 参数初始化

本文介绍如何使用PyTorch对卷积层和批归一层进行权重初始化。通过定义一个初始化函数并利用apply()方法应用于网络模型的各个子模块中。此外,还介绍了如何查看各层的权重和偏置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要记录如何在pytorch中对卷积层和批归一层权重进行初始化,也就是weight和bias。

主要会用到torch的apply()函数。【apply】

apply(fn):将fn函数递归地应用到网络模型的每个子模型中,主要用在参数的初始化。

使用apply()时,需要先定义一个参数初始化的函数。

def weight_init(m):
    classname = m.__class__.__name__ # 得到网络层的名字,如ConvTranspose2d
    if classname.find('Conv') != -1:  # 使用了find函数,如果不存在返回值为-1,所以让其不等于-1
        m.weight.data.normal_(0.0, 0.02)
    elif classname.find('BatchNorm') != -1:
        m.weight.data.normal_(1.0, 0.02)
        m.bias.data.fill_(0)

之后,定义自己的网络,得到网络模型,使用apply()函数,就可以分别对conv层和bn层进行参数初始化。

model = net()
model.apply(weight_init)

以上就可以对各层进行参数初始化。

如何查看效果呢?也就是如何查看各层的weight和bias。

需要用到上一篇文章【点此到达】中的state_dict()函数,返回网络的所有参数。具体如下:

params = model.state_dict()
    for k, v in params.items():
        print k  # 打印网络中的变量名,找出自己想查看的参数名字,这个与自己定义网络时起的名字有关。
    print params['net.convt1.weight']   # 打印convt1的weight
    print params['net.convt1.bias'] # 打印convt1的bias


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值