공부방/Today I Learned 39

[TIL] Python class 상속과 super()

[주절주절] - [Today I Learned] # 상속(inheritance)과 메서드 오버 라이딩(overriding) - 클래스 상속이란 물려주는 클래스(Parent class, Super class)의 속성과 메서드를 물려받는 클래스(Child class, Sub class)가 갖게 되는 것. - 어떤 클래스를 상속받아 클래스를 정의했을 때, 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것이 메소드 오버 라이딩. class Person: def show(): print('Person!') class Student(Person): def show(self): print('Student!') Hye = Student() Hye.show() # super() super()는 자식 클래스에서 부모 ..

[TIL] Python 클래스의 메서드(method) + 데코레이터(decorater)

[주절주절] 코드 짜기 싫어서.. 괜히 딴 거 공부..🎭 [Today I Learned] # 클래스 속성과 인스턴스 속성 클래스의 속성에는 클래스 속성과 인스턴스 속성 두 가지 종류가 있다. 1) 클래스 속성 class Person: bag = [] def put_bag(self, stuff): self.bag.append(stuff) 위와 같이 코드를 작성했을 경우, bag가 클래스 속성이 된다. class Person: bag = [] def put_bag(self, stuff): self.bag.append(stuff) Amy = Person() Amy.put_bag('책') Hye = Person() Hye.put_bag('노트북') print(Amy.bag, Hye.bag) Amy와 Hye 인스..

[TIL] 0824 AdaIN / U-GAT-IT 논문 정리

[주절주절] BOAZ 2020 여름 GAN 스터디 [Today I Learned] 1) AdaIN(Adaptive Instance Normalization) : 컨텐츠 feature의 평균과 분산을 스타일 feature에 대해 정렬해 스타일을 입히는 방식 ([이미지 = 컨텐츠 + 스타일]이라는 관점에서 시작) - 기존) Gatys가 제안한 DNN을 통한 Style transfer. (DNN을 통한 컨텐츠와 스타일 인코딩) ㄴ BUT, 스타일 개수만큼 모델이 필요함. 속도가 느림 등 문제 多 > 해결해보자! ( * 논문 Full 제목이 Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization) - 배경지식인 동시에 사고 흐름🧠 ①..

[TIL] 0819 BAGAN 논문 정리

[주절주절] CVML Imbalanced한 데이터셋, 특히나 minor class의 개수까지 적을 경우 classification과 같은 문제를 해결하기가 어렵다. 이 때 minor class 데이터를 GAN을 통해 augmentation하는 것이 참여하게 된 프로젝트의 목표이다. 👩🏻‍💻 교수님께서 BAGAN이라는 논문을 제시해주셨고 이 모델을 토대로 이것저것 붙였다 뗐다, 변형해보라고 방향성을 일단 잡아주셨다. 다른 모델을 써도 되고, 심지어 GAN을 쓰지 않아도 되지만 이런 태스크에 대해서는 아는게 없기 때문에 BAGAN부터 차근차근 시작해보려한다. : > [Today I Learned] # BAGAN 논문 정리 p.3 - 4) BAGAN - GAN과 오토인코더 모두 채택> 두 모델의 장점 모두 이..

[TIL] Python isinstance / Json.dumps ; default

[주절주절] 😤 [Today I Learned] # Python isinstance 주어진 인스턴스가 특정 클래스 혹은 데이터 타입인지 검사해주는 함수이다. isinstance(인스턴스, 클래스/데이터 타입)으로 사용한다. result = isinstance(1,int) print(result) > True result = isinstance([1,2,3],list) print(result) > True isinstance 함수가 type()에 대해 갖는 장점은 상속 관계도 확인할 수 있다는 점이다. class Soccer(self): ... class Play(Soccer): ... p = Play() type(p) == Play > True type(p) == Soccer > False isinsta..

[TIL] Python List Comprehension

[주절주절] - [Today I Learned] # Python comprehension Python comprehension이란 iterable한 객체를 생성하기 위한 방법 중 하나로 크게 List, Set, Dictionary, Generator, 총 4가지 종류의 comprehension이 있다. # List Comprehension(LC) List comprehension은 리스트를 쉽게 생성할 수 있는 방법이다. 단순 반복 조건은 물론, 함수까지 함께 이용하면 다양한 조건의 리스트도 생성할 수 있다. 다음은 내가 가장 처음 작성했던 코드와, 그를 List comprehension을 통해 개선한 결과이다. 1) 1~n까지의 숫자를 특정 함수에 적용한 리스트 반복 생성 #개선 전 def rating..

[TIL] Python 내장 함수

[주절주절] - [Today I Learned] # Python 내장 함수 파이썬에는 사용할 수 있는 여러 함수가 내장되어있다. 이러한 내장함수는 def next(self): return self.__next__() 와 같은 식으로 정의되어있다. (실제로 파이썬이 어떻게 코딩되어있는지 궁금한데 보는 곳을 못찾았다.) 따라서 내가 새롭게 정의한 class에 __next__() 함수를 정의해주면, 클래스명.함수명()이 아니라 next()와 같이 곧바로 함수를 사용할 수 있게 된다. class Fetcher(self): ~ ... def __next__(): print('next!') F = Fetcher() next(F) > next! 내장함수와 이름이 다른 함수를 위와 같이 사용하고 싶을 때에는 내장 함수..

[TIL] CycleGAN 이용해 사진 ↔ 고흐의 그림 변환하기

[주절주절] - [Today I Learned] # 시드 설정하기 # Set random seed for reproductibility manualSeed = 999 print("Random seed:",manualSeed) random.seed(manualSeed) torch.manual_seed(manualSeed) 모델이나 이런저런 util을 바꾸고 추가하다 보면 어느 순간 잘되던 학습이 안 되는 때가 있다. 그때, weight init과 같은 것들의 영향을 줄여 정말 내가 새로 추가한 것이 문제인지 알 수 있게 된다. # Data imbalance 1) 고흐의 그림은 유한하지만 풍경, 인물 사진은 무한하게 구할 수 있기 때문에 학습에 사용할 수 있는 데이터 수에도 차이가 나게 된다. 배치 사이즈를..

[TIL] DCGAN 이용해 Fashion MNIST 이미지 생성하기

[주절주절] StyleGAN, StarGAN 코드를 보려는데 파일은 왜 이렇게 여러 개며, 함수, class는 왜 이리 많은지..? 4~5일을 제자리걸음 하며 방황했다. 이해를 한다 하더라도 사용할 때 내가 짠 코드가 아니라서 분명 버벅거릴 거 같아서 사실상 참고해서 직접 '구현'을 해야 하지 않을까.. 생각! (팀원들은 아닌 것 같지만) 곰곰이 생각해보니 기본 중의 기본 DCGAN도 혼자 구현해보라고 하면 못할 거 같아서, (DCGAN과 StyleGAN의 거리는 꽤나 있어 보이지만) DCGAN부터 다시 하나씩 해보자는 마음으로 끄적대기 시작했다. [Today I Learned] # 변수 이름 잘 짓기 파이썬은 기본적으로 내장된 함수가 많아서, 함수 이름과 같은 이름의 변수를 짓고 사용하게 되면 내장 함..