반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- vision transformer
- rnn
- tensorflow
- python
- 파이썬
- DeepLearning
- __init__
- 가상환경구축
- CNN
- torch.nn
- 가상환경
- Anaconda
- __call__
- Visual Studio Code
- AI
- ubuntu
- wsl2
- LSTM
- 딥러닝
- objectdetection
- ViT
- Torchvision
- 파이썬문법
- python 문법
- 머신러닝
- torch.nn.Module
- pychram
- pytorch
- docker
- vsC
Archives
- Today
- Total
인공지능을 좋아하는 곧미남
[python] __call__ 본문
class의 magic function인 __call__에 관해 알아보겠습니다.
< INDEX >
1. "__call__"의 사용목적 및 기본예시
2. "__call__"을 사용하여 pytorch에서 nn.Module 패키지 내부적으로 수행되는 def forward(self, x)의 기능을 __call__로 구현
1. "__call__"의 사용목적 및 기본예시
1) 사용 목적: 클래스의 객체를 호출하게 만들어주는 매서드 __call__!
- class와 __init__ 매서드를 정의해주고 __call__ 매서드를 정의한 후 class 객체를 생성해주고 그 생성자를 호출하면 __call__ 매서드의 명령어가 실행된다.
2) 예시 코드
class A():
def __init__(self, x, y):
self.x = x
self.y = y
print(self.x, self.y)
def __call__(self, *input, **kwargs):
return f"call function is adding: {self.x + self.y}"
if __name__ == "__main__":
"""
callable한 인스턴스는 a()이렇게 호출할 수 있다. 다만, a만 호출하면 포인터인 주소값이 저장됨.
"""
a = A(10, 2)
b = a()
c = a
print(b)
print(c)
3) 출력 코드
10 2
call function is adding: 12
<__main__.A object at 0x00000231C476C7F0>
첫번째 줄: 인스턴트 생성 시 __init__ 호출 결과
두번째 줄: __call__ 메서드 호출
세번째 줄: __call__ 메서드 주소값 호출
2. "__call__"을 사용하여 pytorch에서 nn.Module 패키지 내부적으로 수행되는 def forward(self, x)의 기능을 __call__로 구현

1. def __call__(self, *args, **kwargs): 메서드로 input data를 전달 받음.
2. self.forward(*args)에 input data를 전달함.
3. def forward(self, x)에서 전달 받은 input data를 Layer 구성인 self.sequential의 인자로 전달함.
4. 그후 최종 output을 전달 받아 출력.
읽어주셔서 감사합니다.
반응형
'code_study > python world' 카테고리의 다른 글
[python] OrderedDict는 딥러닝에서 어떻게 사용될까? (0) | 2022.02.08 |
---|---|
[python] Packing, Unpacking (0) | 2022.01.17 |
[python] 내장함수 setattr()와 getattr() (0) | 2022.01.13 |
[python] 가정 설정문 assert (0) | 2022.01.11 |
[python] Class 상속, 오버라이딩, super() 내용 정리 및 코드 (0) | 2022.01.10 |