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 这个名字就是成员变量的名字的拼接。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容