일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- clean code
- math
- CV
- nerf
- Python
- 머신러닝
- ML
- SSL
- cs
- FGVC
- computervision
- classification
- REACT
- Front
- Depth estimation
- Vision
- web
- 자료구조
- pytorch
- 알고리즘
- algorithm
- Meta Learning
- 딥러닝
- GAN
- nlp
- 3d
- dl
- Torch
- PRML
- FineGrained
- Today
- Total
목록Python/CLEAN CODE (20)
KalelPark's LAB
*args, **kwargs란? Python에서의 *, **는 주소값을 저장하는 의미가 아닙니다. 여러 개의 인수를 받을 때, 키워드 인수를 받을 때 사용하는 표시입니다. *args *args는 *arguments의 줄임말입니다. 즉, 다른 단어를 작성해도 상관없습니다. 이 지시어는 여러 개(복수개)의 인자를 함수로 받고자 할 때 쓰입니다. *의 의미는 메모리 주소를 찾아서 값을 읽어준다는 의미이다. **kwargs kwargs는 keyword argument의 줄임말로 키워드를 제공합니다. **kwargs는 (키워드 = 특정 값) 형태로 함수를 호출할 수 있습니다. 즉, 딕셔너리 형태로 함수 내부로 전달됩니다. class nerf: def __init__(self, purple = 5, role = 5..
Machine Learning 및 Deep Learning에서는 선형대수를 알아야 하는 것은 필수입니다..! 선형대수와 관련된 Numpy를 톺아보도록 하겠습니다. - 단위 행렬(identity Matrix) : np.Unit(x) - 대각 행렬(Diagonal Matrix) : np.diag(x) - 내적(Dot Product, inner product) : np.dot(a, b) - 대각합(Trace) : np.trace(x) - 행렬식(Matrix Determinant) : np.linalg.det(x) - 역행렬(Inverse of a Matrix) : np.linalg.inv(x) - 고유값(Eigenvalue) : np.linalg.eig(x) - 특이값 분해(Singular Value Deco..
broadcast_to란? 배열을 새로운 모양으로 broadcast합니다. import numpy as np x = np.array([1, 2, 3]) temp = np.broadcast_to(x, (3, 3)) >> array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) linspace란? Python의 Numpy 모듈에 포함된 함수로서 1차원 배열 만들때 활용됩니다. (line spaced의 줄임말입니다.) 그래프 그리기에서 수평축의 간격 만들기 등에서 매우 편리하게 사용할 수 있는 함수입니다. 시작 값과 끝 값을 입력하고, 몇 개의 일정한 간격으로 요소를 만들 것인지를 나타내야 합니다. import numpy as np x = np.linspace(0, 10, 11) print(x..
YACS(Yet Another Configuration System)란? - YACS는 실험을 위해 설계된 소프트웨어로 시스템 구성, 정의 및 관리하기 위해 만들어진 경량 시스템이다. 주로 머신러닝에서의 hyperparameter를 관리한다든지, Conv를 관리할 때 사용합니다. - 재현성이 주로 중요하므로, 실험구성을 configuration을 할 수 있는 신뢰할 수 있는 방식이 필요하다. EX> from yacs.config import CfgNode as CN _C = CN() _C.SYSTEM = CN() # Number of GPUS to use in the experiment _C.SYSTEM.NUM_GPUS = 8 # Number of workers for doing things _C.SYS..
StaticMethod, ClassMethod 알아보기 ClassMethod - 데코레이터를 사용해서 클래스에 메서드를 선언하면 해당 메서드는 클래스 메서드가 되며, 첫번째 매개 변수로 클래스 인스턴스가 아닌 클래스 자체가 넘어오게 됩니다. 관행적으로 cls라고 부르며, 클래스 메서드는 cls를 통하여 속성(attribute)에 접근하거나, 클래스 메서드를 호출할 수 있습니다. 하지만, 인스턴스 메서드와 달리 인스턴스 속성에 접근하거나 다른 인스턴스 메서드를 호출하는 것은 불가능합니다. class User: def __init__(self, email, password): self.email = email self.password = password @classmethod def fromTuple(cls..
Logging이란? - 정보를 제공하는 일련의 기록인 로그(log)를 생성하도록 시스템을 작성하는 활동을 의미합니다. 어떤 소프트웨어가 실행될 때 발생하는 이벤트를 추적하는 수단입니다. 코드에 로깅 호출을 추가하여, 특정 이벤트가 발생했음을 나타냅니다. - 로그(log)를 활용하면 재현하기 힘든 버그에 대한 유용한 정보를 제공할 수 있습니다. 또한, 성능 및 통계에 대한 정보를 제공합니다. 설정이 가능한 경우, 로그는 예기치 못한 특정 문제들을 디버그할 수 있습니다. * 일반적으로, Shell과 같은 커멘드 인터페이스에서는 print보다 logging을 사용하는 것이 낫다고 말합니다. Python에서는 logging을 위한 유용한 라이브러리를 제공합니다. Log Levels * 로그는 각 래벨 중 하나를..
Dictionary - 파이썬에서 Dictionary를 활용할 때, 어떤 Key에 대한 Value를 처리해야 하는 경우가 상당히 많이 존재합니다. EX> def counterLetters(word): counter = {} for letter in word: if letter not in counter: counter[letter] = 0 counter[letter] += 1 return counter * 위 코드의 문제는 letter가 counter내에 존재하지 않으면, 초기 세팅을 해주는 코드입니다. 하지만, 위 코드의 문제는 가독성이 상당히 떨어진다는 상당한 문제점이 존재합니다. Dict.setdefault - Key와 Value를 인자로 받는 Dictionary의 Method입니다. 원리는 set..
Property - 파이썬에는 내장함수로 property()와 데코레이터인 @Property가 존재합니다. property()를 사용하면서 필드명을 사용하는 것처럼 메서드를 호출할 수 있습니다. class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age def get_age(self): return self._age def set_age(self, age): if age < 0: raise ValueError("Invalid age") self._age = age age = property(get_age, set_age) pro..