함수 Generic Go도 1.18 버전부터 Generic을 지원하기 시작했다. func 함수명[T any](n T) T {...} 함수명 뒤에 [ ]를 통해 제너릭을 선언할 수 있다. any는 모든 타입을 뜻하며, comparable은 ==, != 비교가 가능한 타입을 의미한다. 그 외 정의된 타입의 키워드(string, int...)들을 사용할 수 있다. func Power[T int | float64](n T) T { return n * n } |(OR)을 이용해 여러 타입을 작성할 수 있다. type Number interface { int | int16 | int32 | int64 | float32 | float64 } func Power[T Number](n T) T { return n * n..
C언어의 기본 문법이나 OOP(객체지향)에 대한 기본 개념을 알고 있다는 전제로 작성된 글이다. 예제 코드의 간결함을 위해 아래 내용은 생략하고 기록하였다. #include using namespace std; C → C++ // C++ struct Sample { int id; char name[10]; }; /* C typedef struct { int id; char name[10]; } Sample; */ int main(void) { Sample sample = { 1, "DeneV" }; cout
딥러닝으로 모델을 학습시키기 위해 미분 값을 구하는 과정이 필요하다. 만약 왜 미분이 필요한지 모른다면 '경사하강법과 학습률'을 참고하면 된다. 해당 내용을 몰라도 이번 글을 이해하는 데는 문제가 없다. 문제점Chain-rule연산자와 미분 결과계산 과정 시각화역방향으로 계산문제점일반적으로 미분값을 구할 때, 도함수를 구한 후 값을 대입해 계산한다.$f(x)=ax^3+bx^2+c \\ \cfrac{d}{dx}f(x)=3ax^2+2bx$하지만 문제는 모델의 연산 과정이 너무 복잡하다. $f(x)=Linear(Droupout( ... (maxpool(relu(conv(...))))))$위 예시는 아주 기본적인 CNN 모델의 구조이다. 그리고 가장 많이 사용되는 손실 함수인 Cross Entropy with ..