pytorch Module named_parameters 解析

named_parameters 不会将所有的参数全部列出来,名字就是成员的名字。也就是说通过 named_parameters 能够获取到所有的参数。因为一般来说,类中的成员是私有的,所以通过这种方式能够获取到所有的参数,进而在 optimizer 进行特殊的设置。看例子:

from torch.nn import Module
from torch.nn import Linear, LSTM

class Custom(Module):

    def __init__(self):
        super().__init__()
        self._liner = Linear(in_features=2, out_features=1)


class MyModel(Module):

    def __init__(self):
        super().__init__()
        self._custom = Custom()
        self._liner = Linear(in_features=3, out_features=2)


if __name__ == '__main__':
    model = MyModel()

    for name, param in model.named_parameters():
        print(f"name: {name}, param: {param}")

输出结果:

name: _custom._liner.weight, param: Parameter containing:
tensor([[ 0.1491, -0.1399]], requires_grad=True)
name: _custom._liner.bias, param: Parameter containing:
tensor([0.1610], requires_grad=True)
name: _liner.weight, param: Parameter containing:
tensor([[ 0.4107,  0.3264, -0.3523],
        [-0.1159,  0.1754, -0.0553]], requires_grad=True)
name: _liner.bias, param: Parameter containing:
tensor([ 0.0489, -0.0194], requires_grad=True)

_custom._liner.weight 这个名字就是成员变量的名字的拼接。

你可能感兴趣的:(pytorch Module named_parameters 解析)