728x90

OOP 3

[Pytorch] Learning Rate Scheduler 커스텀하기

CycleGAN을 구현하던 도중 learning rate decay를 linear하게 주었다는 부분을 확인할 수 있었다. 그러나 내가 찾아본 바로는 torch 내의 learning rate scheduler는 linear decay를 적용하는 scheduler가 없었다 (아마 그런 scheduling이 좋지 않으니까 구현이 안되어 있는 게 아닐까 한다). 하지만 논문을 최대한 반영해서 구현해보고 싶어서 직접 구현해보기로 했다. 코드 구현 자체는 어렵지 않으나 pytorch 내에서 어떻게 learning rate scheduler가 작동하는지의 원리를 파악할 필요가 있었다. _LRScheduler 파이토치 내에 구현되어 있는 scheduler의 베이스 클래스이다. """ code reference: htt..

[Python] 클래스 선언 시 object 상속을 하는 이유

파이토치 learning rate scheduler 소스 코드를 뜯어보다가 베이스 클래스인 _LRScheduler가 object를 상속받는 것을 알 수 있었다. 클래스 __init__과정에서 super().__init__()도 수행하지 않는데, 즉 어떤 속성도 상속받지 않는데 대체 그럼 object를 상속받는 건 무슨 역할을 하는 것일까 하는 궁금증에 찾아본 내용을 정리한다. old-style class vs. new-style class [문제의 코드] class _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1, verbose=False): # Attach optimizer if not isinstance(optimizer, Opti..

[python] getter, setter, property, decorator 정리

_로 시작하는 변수 (getter, setter) (참고: https://www.daleseo.com/python-property/) : 외부에서 직접 접근이 어려운 변수 (클래스 인스턴스의 내부 데이터를 보호하기 위함) class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.set_age(age) def get_age(self): ## getter return self._age # 외부에서 직접 접근을 하지 못하고, getter를 통해서만 가능 def set_age(self, age): ## setter if age < 0: raise Va..

728x90