named_parameters函数
- 以迭代器的方式返回model中所有的参数,返回值是一个
字典 :包含参数的名称 和数值大小 ; - 内部实现时使用了
递归算法 ,所以对于嵌套的网络参数,会递归遍历 ,输出最底层的参数 ,参看下面的例子;
named_children()函数
- 该函数用来输出网络中的
第一层模块名称和实例对象 ,只会展示最上层的模块名;
named_modules()函数
- 该函数用来递归输出网络中的
每一层模块名称和实例对象 ,会显示所有层每一模块的名称
例子
import torch
import torch.nn as nn
class TestModel(nn.Module):
def __init__(self):
super(TestModel,self).__init__()
self.conv1 = nn.Conv2d(3, 12, kernel_size=3, padding=1)
self.layer1 = nn.Sequential(
nn.Conv2d(12, 6, kernel_size=3, padding=1),
nn.Conv2d(6, 6, kernel_size=3, padding=1),
nn.ReLU(inplace=True)
)
def forward(self, x):
x = self.conv1(x)
x = self.layer1(x)
model = TestModel()
named_parameters = model.named_parameters()
print('------------parameters-----------------')
for name, parameter in named_parameters:
print(name)
named_children = model.named_children()
print('------------parameters-----------------')
for name, children in named_children:
print(name)
named_modules = model.named_modules()
print('------------modules-----------------')
for name, module in named_modules:
print(name)
------------输出--------------------------
------------parameters-----------------
conv1.weight
conv1.bias
layer1.0.weight
layer1.0.bias
layer1.1.weight
layer1.1.bias
------------parameters-----------------
conv1
layer1
------------modules-----------------
conv1
layer1
layer1.0
layer1.1
layer1.2
|