nn.Linear()
등으로 정의한 파라미터 접근은 parameters(), named_parameterss()
으로 가능하다. 정확히는 layer가 모두 nn.Module()
을 상속받으므로 Module에 정의되어 있는 parameter 접근 방법을 사용하면 된다.
1. torch.nn.Module.parameters()
parameters()
는 layer 이름을 제외한 parameter값에 대한 iterator를 준다.
layer = torch.nn.Linear(10,3)
layer
>> Linear(in_features=10, out_features=3, bias=True)
for p in layer.parameters():
print(p)
>> Parameter containing:
tensor([[-0.2232, 0.0369, -0.2201, -0.1385, -0.1104, 0.2852, 0.0249, -0.0295,
0.0382, 0.2847],
[-0.0430, 0.3032, 0.1541, -0.3093, 0.1008, -0.3134, -0.1431, 0.0280,
0.2178, 0.2094],
[ 0.1900, -0.2386, 0.1099, 0.1769, -0.0338, -0.2079, 0.0816, -0.0180,
-0.0182, 0.1578]], requires_grad=True)
Parameter containing:
tensor([ 0.1549, -0.0628, 0.1692], requires_grad=True)
2. torch.nn.Module.named_parameters()
named_parameters()
는 (name, parameter) 조합의 tuple iterator를 준다. 이때 출력물은 named_tuple이 아니니 헷갈리지 말자.
for p in layer.named_parameters():
print(p)
>> ('weight', Parameter containing:
tensor([[-0.2232, 0.0369, -0.2201, -0.1385, -0.1104, 0.2852, 0.0249, -0.0295,
0.0382, 0.2847],
[-0.0430, 0.3032, 0.1541, -0.3093, 0.1008, -0.3134, -0.1431, 0.0280,
0.2178, 0.2094],
[ 0.1900, -0.2386, 0.1099, 0.1769, -0.0338, -0.2079, 0.0816, -0.0180,
-0.0182, 0.1578]], requires_grad=True))
('bias', Parameter containing:
tensor([ 0.1549, -0.0628, 0.1692], requires_grad=True))
# 이름만 출력
for name, p in layer.named_parameters():
print(name)
>> weight
bias
728x90
'pytorch, tensorflow' 카테고리의 다른 글
[PyTorch] Embedding 추가하기 (0) | 2022.10.01 |
---|---|
[PyTorch] torch.cat(), torch.stack() 비교 (0) | 2022.10.01 |
[pytorch] torch.reshape에 관하여 (0) | 2022.07.11 |
[tensorflow 2.0] model.save, model.save_weights 차이 (0) | 2021.04.01 |