pytorch 网络参数初始化

本文主要介绍了PyTorch中网络参数初始化的方法,重点讲解了如何以循环方式为Sequential和自定义Module的layer进行初始化,并对比了.nn.Module中.children()与.modules()的区别,指出.children()仅访问第一层layer,而.modules()能遍历所有深层layer。
摘要由CSDN通过智能技术生成

知识点1、以循环的方式给layer初始化
知识点2、nn.Module中.children()与.modules()的区别

知识点1(重点)

以循环的方式给layer初始化,重点是一下代码,记住

for layer in net1()
	if isinstance(layer, nn.Linear):
		layer.weight.data = torch.from_numpy(np.random.uniform(3, 4, size=layer.weight.shape))

对于Sequential定义的网络

import torch
from torch import nn
import numpy as np
# 初始化网络
net1 = nn.Sequential(
    nn.Linear(3, 4),
    nn.ReLU(),
    nn.Linear(4, 5),
    nn.ReLU(),
    nn.Linear(5, 1)
)
# 通过net1[0].weight访问第一层的w(variable)然后.data 以tensor的形式访问w
print(net1[0].weight.data)
# 给net中参数赋值
net1[0].weight.data = torch.from_numpy(np.random.uniform(3, 4, size=(3, 4)))
# 赋值模板
for layer in net1:
    if isinstance(layer, nn.Linear):
        layer.weight.data = torch.from_numpy(np.random.uniform(3, 4, size=layer.weight.data.shape))

print(net1[0].weight.data)
print(net1[2].weight.data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值