반응형
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 |
Tags
- ubuntu
- wsl2
- DeepLearning
- __call__
- 가상환경구축
- pip install
- Torchvision
- AI
- __init__
- torch.nn.Module
- 머신러닝
- Deep learning
- 가상환경
- python
- vision transformer
- pychram
- objectdetection
- LSTM
- Anaconda
- CNN
- ViT
- 딥러닝
- python 문법
- torch.nn
- rnn
- docker
- pytorch
- 파이썬
- tensorflow
- 파이썬문법
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 |
Comments