-
torch에서 parameters를 보는 법AI Basic 2023. 2. 13. 01:08
공부중에 모델 구조와 parameters의 개수를 알고 싶어서 알아봤다. 정리함.
참고한 사이트는
https://comlini8-8.tistory.com/50
Pytorch weight 저장에 대해 우리가 알아야하는 모든 것
towardsdatascience.com/everything-you-need-to-know-about-saving-weights-in-pytorch-572651f3f8detowardsdatascience.com/everything-you-need-to-know-about-saving-weights-in-pytorch-572651f3f8de Everything You Need To Know About Saving Weights In PyTorch What
comlini8-8.tistory.com
첫번째 방법 parameters() 본다.
for param in audio_siren.parameters(): print(param) print(param.size()) # 결과 Parameter containing: tensor([[ 0.0097, 0.0195, 0.0006, ..., 0.0054, -0.0139, -0.0067], [ 0.0166, 0.0122, -0.0023, ..., -0.0172, -0.0021, -0.0073], [ 0.0104, 0.0077, 0.0044, ..., 0.0033, 0.0189, -0.0034], ..., [-0.0034, -0.0068, 0.0055, ..., 0.0043, -0.0103, 0.0047], [-0.0005, 0.0016, 0.0135, ..., -0.0005, 0.0139, 0.0003], [-0.0036, 0.0168, -0.0055, ..., 0.0148, 0.0038, 0.0007]], device='cuda:0', requires_grad=True) torch.Size([64, 64])
두번째 방법 named_parameters()를 이용해서 확인한다.
for name, param in audio_siren.named_parameters(): print(f'name:{name}') print(type(param)) print(f'param.shape:{param.shape}') print(f'param.requries_grad:{param.requires_grad}') print('------------------------------------------') # 결과 name:net.0.linear.weight <class 'torch.nn.parameter.Parameter'> param.shape:torch.Size([64, 1]) param.requries_grad:True ------------------------------------------ name:net.0.linear.bias <class 'torch.nn.parameter.Parameter'> param.shape:torch.Size([64]) param.requries_grad:True ------------------------------------------ name:net.1.linear.weight <class 'torch.nn.parameter.Parameter'> param.shape:torch.Size([64, 64]) param.requries_grad:True ------------------------------------------ name:net.1.linear.bias <class 'torch.nn.parameter.Parameter'> param.shape:torch.Size([64]) param.requries_grad:True ------------------------------------------
세번째 방법 torchsummary를 이용한다.
사실 이방법이 간단한 구조를 판단할때는 가장 좋은것 같다.
from torchsummary import summary as summary summary(audio_siren, (len(model_input[0]),1)) #결과 ---------------------------------------------------------------- Layer (type) Output Shape Param # ================================================================ Linear-1 [-1, 308207, 64] 128 SineLayer-2 [-1, 308207, 64] 0 Linear-3 [-1, 308207, 64] 4,160 SineLayer-4 [-1, 308207, 64] 0 Linear-5 [-1, 308207, 64] 4,160 SineLayer-6 [-1, 308207, 64] 0 Linear-7 [-1, 308207, 64] 4,160 SineLayer-8 [-1, 308207, 64] 0 Linear-9 [-1, 308207, 1] 65 ================================================================ Total params: 12,673 Trainable params: 12,673 Non-trainable params: 0 ---------------------------------------------------------------- Input size (MB): 1.18 Forward/backward pass size (MB): 1206.29 Params size (MB): 0.05 Estimated Total Size (MB): 1207.51 ----------------------------------------------------------------
반응형'AI Basic' 카테고리의 다른 글
yolov5 실행하기 (0) 2023.03.18 Transfer Learning Tutorial(전이학습) (0) 2023.03.12 Transformer가 transfer learning에 적합한 이유. (0) 2023.03.07 conda yml 만드는 법(feat. 많이 설치되어 있다고 쫄지 말자) (0) 2023.02.13 implicit network using siren (1) 2023.02.12