일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CGAN
- tent paper
- Pix2Pix
- dann paper
- 딥러닝손실함수
- mocov3
- Pseudo Label
- 컴퓨터구조
- BYOL
- mme paper
- Entropy Minimization
- 백준 알고리즘
- Meta Pseudo Labels
- remixmatch paper
- cifar100-c
- dcgan
- semi supervised learnin 가정
- SSL
- UnderstandingDeepLearning
- ConMatch
- WGAN
- 최린컴퓨터구조
- CoMatch
- conjugate pseudo label paper
- shrinkmatch
- GAN
- shrinkmatch paper
- adamatch paper
- simclrv2
- CycleGAN
Archives
- Today
- Total
Hello Computer Vision
파이썬 getattr 알아보기 본문
다른 사람들의 코드들을 살펴보던 중 getattr을 발견했다. 예전부터 몇번 본 거 같은데 코드짜는데 있어 알고 있으면 나쁠 거는 없다고 생각해서 기록해두려고 한다.
우선 파이썬 내장된 함수이며 따로 import 해서 불러올 필요가 없다. 다른 분들의 설명을 잘 이해를 못했었는데 예시를 통해서 보면 더 쉬울 거 같다.
import torch.nn as nn
import torch
class MyModule(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim):
super(MyModule, self).__init__()
self.fc = nn.Linear(input_dim, hidden_dim)
self.bn = nn.BatchNorm1d(hidden_dim)
self.output_layer = nn.Linear(hidden_dim, output_dim)
model = MyModule(input_dim=100, hidden_dim=64, output_dim=10)
fc_layer = getattr(model, "fc")
bn_layer = getattr(model, 'bn')
print(fc_layer)
print(bn_layer)
print(fc_layer(torch.rand(100)).shape)
Linear(in_features=100, out_features=64, bias=True)
BatchNorm1d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
torch.Size([64])
torch를 이용해 class를 생성하고 그 안에 layer들을 설정하고 그 layer들은 fc, bn으로 설정하였다. 그리고 model이라는 객체를 설정하였다.
그리고 이제 getattr을 이용하여 model객체를 불러오고, 그 안에 fc, bn을 찾는다면 새로운 변수를 layer로 설정할 수 있는 것이다. 위의 코드를 본다면 쉽게 알 수 있고 layer에 대한 input값을 준다면 output값도 올바르게 나온 것을 확인할 수 있다.
'딥러닝 > 파이썬' 카테고리의 다른 글
파이썬 copy, deepcopy 쓰는 이유 및 사용해보기 (0) | 2024.01.17 |
---|---|
[python] logging.getLogger(__name__) 선언 이유 (0) | 2023.12.24 |
[python] 튜플을 사용하는 이유 (0) | 2023.12.18 |
할당과 복사(얕은 복사, 깊은 복사) (0) | 2023.04.01 |
파이선 함수에서의 ->(화살표) , :(콜론) 의 쓰임 (0) | 2023.02.18 |