본문 바로가기

전체 글112

2023-06-07 회고록 안녕하세요. 근 1년간 블로그 활동을 하지않다가 이렇게 갑작스럽게 복귀하게 되었네요. (사실 그동안 많은 내용들을 블로그가 아닌 노션에 정리하느라 블로그에 작성할 것들도 많이 쌓인 상태..ㅠㅠ) 그동안 있었던 일들을 기록할겸, 생각을 정리할겸, 누군가에게는 도움이 되길 바라며 두서없이 긴 글을 적습니다.. 블로그 활동을 할 당시, 세상 물정 모르고 꿈과 열정이 넘쳤던 시기라고 생각합니다. 항상 그래왔던 것처럼 앞만 보고 달리며, 나만 잘하면 된다 라는 마인드로 살아왔던것 같아요. 그래서 일반 개발 직군의 직장과 함께 인공지능 특수대학원을 같이 병행하고, 졸업 논문도 쓰고, 추가로 국내 학회에서 논문 하나를 더 투고 했네요. 여차저차 아는 형의 소개로 A라는 인공지능 스타트업에 입사하게 되었습니다. 따지고.. 2023. 6. 7.
# 3. Deep Residual Learning for Image Recognition Abstract 신경망의 깊이가 깊어질수록 학습에 어려움이 존재한다. 해당 논문에서는 residual learning framework (잔차 학습 프레임워크)를 통해 신경망이 깊어지더라도 학습을 쉽게 할 수 있음을 제안한다. 해당 방법은 기존의 unreferenced functions 대신 인풋 레이어를 참조하는 (referenced) residual function을 학습하도록 명시적으로 수식을 다시 정의한다. (이 부분에 대해서는 뒷 부분에서 그림을 통해 다시 쉽게 설명할 것이다.) 이 학습방법의 효과로 VGG-19 네트워크를 8배 더욱 깊게 레이어를 쌓았음에도 불구하고 계산 복잡도가 더 낮았다. residual 네트워크들의 집합(앙상블)은 결국에는 ImageNet 데이터 셋에 대해 3.57%의 에.. 2022. 5. 15.
# 2. Going deeper with convolutions Prerequisite https://dev-ryuon.tistory.com/106?category=1009001 # 1. Network In Network Abstract 본 논문에서는 수용장에서의 로컬 패치에 대한 모델의 분류 성능을 강화하기 위해 "Network In Network"라는 구조를 제안한다. 전통적인 컨볼루션 레이어는 입력을 스캔하기 위한 비선형 활성 dev-ryuon.tistory.com Abstract Google에서 설계한 GoogLeNet은 22개의 레이어로 구성되어 있다. 이 아키텍처의 특징은 네트워크 내부의 컴퓨팅 자원의 활용도를 개선한 것이다. (네트워크의 깊이와 너비를 증가시키면서도 연산량을 유지했다는 점) Introduction GoogLeNet은 AlexNet보다 12.. 2022. 4. 3.
# 1. Network In Network Abstract 본 논문에서는 수용장에서의 로컬 패치에 대한 모델의 분류 성능을 강화하기 위해 "Network In Network"라는 구조를 제안한다. 전통적인 컨볼루션 레이어는 입력을 스캔하기 위한 비선형 활성화 함수가 뒤따르는 선형 필터를 사용한다. 하지만, 수용장(커널)에서의 데이터의 추상화를 위해서 더 복잡한 구조인 micro nerual network를 설계했다. micro neural network는 MLP(multilayer perceptron)이 포함되어 있다. 그리고, 전통적은 FC 레이어 대신에 해석과 오버피팅 방지가 쉬운 GAP(global average pooling)을 활용했다. Introduction CNN에서의 컨볼루션 필터는 GLM(generalized linear mode.. 2022. 3. 28.
12.3 사용자 정의 모델과 훈련 알고리즘 - (1) Prerequisite from sklearn.datasets import fetch_california_housing from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler housing = fetch_california_housing() X_train_full, X_test, y_train_full, y_test = train_test_split(housing.data, housing.target.reshape(-1, 1), random_state=42) X_train, X_valid, y_train, y_valid = train_test_split(X_train_full, .. 2022. 3. 26.
12.2 넘파이처럼 텐서플로 사용하기 기본적으로 텐서플로는 텐서(tensor)를 사용한다. 텐서는 차원에 따라 스칼라 혹은 배열이 될 수 있다. 그리고, 텐서는 넘파이 배열(ndarray)과 유사하기 때문에 넘파이 패키지가 익숙하면 좋다. 텐서의 생성 텐서를 생성하기 위해 tf.constant() 함수에 텐서로 만들기 원하는 값을 인자로 전달하면 된다. import tensorflow as tf tf.constant([1, 2, 3]) >>> # 다차원 배열 tf.constant([[1, 2, 3], [4, 5, 6]]) >>> # 데이터 타입 명시 tf.constant([1, 2, 3, 4, 5, 6], dtype=tf.float32) >>> 텐서의 인덱싱 텐서는 넘파이 배열 혹은 파이썬의 리스트처럼 대괄호를 통해 인덱스 참조가 가능하다... 2022. 3. 21.