Pytorch中named_parameters、named_children、named_modules函数

目录

  • named_parameters函数
  • named_children()函数
  • named_modules()函数
  • 例子

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__()
        # 常规的卷积层,输入通道为3,输出通道为12
        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   # 可以看到对于sequential模块中的模块会给一个数字编号
layer1.0.bias
layer1.1.weight
layer1.1.bias
------------parameters-----------------
conv1
layer1
------------modules-----------------
conv1
layer1
layer1.0
layer1.1
layer1.2

你可能感兴趣的:(Pytorch,pytorch,深度学习)