[Grad-Cam] What? ; Section 1, 2 https://arxiv.org/pdf/1610.02391.pdf Grad-Cam이 소개된 논문입니다. 제목은 Grad-CAM : Visual Explanations from Deep Networks via Gradient-based Localization 입니다. 참 명료하고 매력적인? 제목인것 같습니다! 제목만 보고도 무슨 내용인지 알 것 같은 동시에 확 궁금해지는 그런~ 제목에서 부터 알수있다 싶이 목적은 CNN의 시각적 설명입니다. 이를 통해 CNN 모델이 transparent and explainable해진다고 설명하네요 (XAI에서 사용되는 jargon입니다.) 지난번 포스팅에서 언급드렸다 싶이 CAM의 개념을 활용하고싶을때 Global Average Pooling layer가 필요했었는데, .. 2022. 1. 24. [Grad-Cam] Why? Grad-Cam은 Cam의 개념에서 확장된 것입니다. 그렇다면 Cam을 먼저 이해할 필요가 있겠죠? CAM = Convolutional Activation Map의 약자입니다. Convolution의 결과가 어떻게 활성화되는지 시각화시켜주는 툴이라고 생각하시면 편합니다. CNN을 조금 접해보신 분들은 아래의 그림들을 한번쯤은 보셨으리라 생각합니다. 직관적으로 '이미지의 어떤부분을 보고 분류를 하였느냐!'입니다. 기존에 뭐때문에 CNN의 성능이 좋은지 몰랐던 부분을 이해하기 위한 시도라고 생각하시면 무리 없습니다. 근데 이런 CAM에는 치명적인 단점이 있는데요 모델 내부 layer에 Global Average Pooling이 반드시 포함되어야 한다는 것입니다. 이를 극복하기 위해 나온 개념이 Grad-Ca.. 2022. 1. 24. [검색 노출] 구글 검색 성공사례.. 친구가 구글에 handy-choi 제 블로그 관리자 이름 검색했더니 2페이지에 뜬다고 하네요 저는 안뜹니다 하하 이유는 잘 모르겠어요 나중엔 개념을 검색해보신 분께서 들어와주셨으면좋겠네요~! 2022. 1. 12. MLP 마무리 참 힘들고 지치는 과정이셨죠? 하지만 전체적인 구조를 이해하기 위해 처음부터 끝까지 다 톺아보는 이 과정이 나중엔 정말 도움이 되실 거라 생각합니다. 매번 이렇겐 할수 없잖아요~? 그래서 다음 AlexNet 구현부터는 pytorch를 이용하여 해 보도록 하겠습니다. pytorch를 사용하면 간단한 코딩으로 우리가 복잡하게 계산했던 편미분들을 뚝딱 해준답니다~! 다음 카테고리 AlexNet으로 가보시죠. 2022. 1. 6. [티스토리 노출] 왜 내 블로그는 검색이 안될까..?! 충격! 티스토리는 카카오 꺼라 다음에선 검색이 되는데 구글에선 검색이 안됩니다..ㅎ 근데 보통 뭔갈 알고싶을때 바로 url에 때려 넣지 않습니까?! 그래서 구글에 검색이 되도록 야 구글아 나 블로그 만들었다!라고 알려줘야 된답니다. 1. https://search.google.com/search-console/welcome 2. 오른쪽에 URL 접두어 창에 본인 티스토리 URL을 넣어 주면 됩니다, 계속을 누르시면 아래 창이 뜨고 완료를 누르면 됩니다, 3. 완료를 누르면 소유권 확인이라는 창이 뜨고요 meta-name 로 시작하는 태그를 알 수 있는데 그걸 복사해줍니다. 4. 블로그 관리 페이지로 이동하여 스킨 편집클릭후 우측 상단의 html 편집으로 이동한 뒤 와 사이에 붙여 넣기 해주시면 됩니다! .. 2022. 1. 6. MLP from Scratch with Numpy [7 / 7] - 전체 코딩의 흐름 그전까지의 코딩까지 묶어서 일단 한번 봅시다. import numpy as np import pandas as pd import random import matplotlib.pyplot as plt import os os.environ['KAGGLE_USERNAME'] = # username os.environ['KAGGLE_KEY'] = # key !kaggle competitions download -c digit-recognizer !unzip -q test.csv.zip !unzip -q train.csv.zip train=pd.read_csv('train.csv') test= pd.read_csv('test.csv') Label = train['label'].values Train = train.. 2022. 1. 6. MLP from Scratch with Numpy [6 / 7] - backpropagation2 자 이제 \(W^0\)에 대한 미분도 이어서 해봅시다. 추가적인 설명을 적어 넣어 보도록 하겠습니다. 여기도 마찬가지~! 이제 수식으로 써볼껀 다써봤네여!!! 마지막으로 코딩해보고 끝내버립시다. 2022. 1. 6. [티스토리 수식 플러그인] 수식을 적고 싶어,... 1. 우선 관리자 페이지로 이동합니다. 2. 좌측 꾸미기 카테고리에 스킨편집으로 이동합니다. 3. 우측 상단 html 편집으로 이동합니다. 4. 와 사이에 다음 을 복사해서 붙여넣어줍니다. ">"> 끝 끝! 2022. 1. 6. MLP from Scratch with Numpy [5 / 7] - backpropagation1 자 이제까지 데이터를 입력받으면 [1 x 10] 확률 벡터를 만들어 내는 계산을 완료했습니다. 이를 feed forward라 부릅니다. 문제를 풀어본 상태라고 이해하시면 됩니다. 이젠 문제를 맞힐 수 있도록 혼내줄 겁니다. Back propagation! feed_forward의 결과가 뭐였죠?! 다음과 같습니다. Cost_function = cross_entropy(Output_layer, true_Label) = cross_entropy(softmax(np.dot(ReLU(np.dot(Input_layer , W_0)) , W_1)), true_Label) 이 길고 복잡해 보이는 식을 어떻게 건드려야 하나 두렵겠지만 어쨌든 하나씩 풀어가야 됩니다. 지난 포스팅에서 Cost function으로 쓰인 c.. 2022. 1. 6. MLP from Scratch with Numpy [4 / 7] - feed forward 코딩 흐름 google colab이나 jupyter notebook에서 작동 가능한 코드들입니다. MNIST데이터를 받기위한 사전 작업 해주시고~ import numpy as np import pandas as pd import random import matplotlib.pyplot as plt import os os.environ['KAGGLE_USERNAME'] = # username os.environ['KAGGLE_KEY'] = # key 압축해제 해주시고~ !kaggle competitions download -c digit-recognizer !unzip -q test.csv.zip !unzip -q train.csv.zip 변수 저장 해주겠습니다~! train=pd.read_csv('train.csv.. 2022. 1. 5. MLP from Scratch with Numpy [3 / 7] - Activation 지난 포스팅에 행렬 계산을 해보았습니다. Hidden_layer = np.dot(Input_layer , W_0) Output_layer = np.dot(Hidden_layer , W_1) Output_layer = np.dot(np.dot(Input_layer , W_0) , W_1) 저 정도 계산으로 특별한 성능을 기대한다면 너무 욕심이겠죠? 이제 진짜 시작입니다. 행렬 계산에 그치지 않고 우리는 Activation function을 적용해 줄 것입니다. 활성 함수라고 하죠 그 이유는 모델 전체에 Nonlinearity (비선형성) 성질을 부여하기 위함입니다. 사연이 있는 행위 지만 여기선 간단하게 '어려운 문제 풀기 위해 사용'됐다고 하겠습니다. (* 전공자시라면 반드시 찾아보시길!) 여기선 가장 .. 2022. 1. 4. MLP from Scratch with Numpy [2 / 7] - feed forward2 지난 포스팅의 확장입니다. 실제 MNIST 데이터에 적용하기 MNIST 데이터의 크기는 [28 x 28]의 이미지라고 말씀드렸어 이걸 한 줄로 죽 늘어뜨리면 [1 x 784] vector로 표현할 수 있습니다. 그럼 지난 포스팅에서 봤던 input layer \( I \)의 크기는 어떻게 될까요? [1 x 784] vector가 바로 input layer \(I\)로 표현됩니다~ 그다음은 Hidden layer \( H \)의 크기는 어떻게 정할까요? 사실 맘대로 하면 됩니다. 크게 하면 연산량이 많아지며 복잡한 문제를 해결할 수 있는 가능성이 생기고요 작게 하면 그 반대입니다 Vise Versa. 저는 그냥 [1 x 100] 사이즈의 vector로 만들어 주겠습니다. 마지막으로 output layer .. 2022. 1. 3. MLP from Scratch with Numpy [1 / 7] - feed forward1 계획의 시작 MLP입니다. MLP with 2 layer 모델로 MNIST 분류 문제를 풀어보겠습니다. 우선 아주 쉽게 축소하여 한번 가봅시다! 보통 Hidden layer의 수와 Output layer의 수를 합쳐서 layer 수를 결정하는 것으로 추정됩니다. 아마 곱해지는 행렬이 2개라서 그런것 같습니다. [그림 1] 에 추상화된 MLP 모델이 그려져 있습니다. Input layer를 [1 x 3] vector \(I\) Hidden layer를 [1 x 4] vector \(H\) Output layer를 [1 x 3] vector \(O\) \(W^0\), \(W^1\) 은 행렬입니다. 행렬 곱셈에는 in(곱해지는 것)과 out(결과)을 알고 있다면 그 형태에 끼워 맞춘 행렬을 만들 수가 있.. 2022. 1. 3. MLP from Scratch with Numpy [0 / 7] - Classification 사전작업 앞으로 모델들은 Kaggle의 MNIST데이터를 이용하여 시동? 검증하려고 합니다. import numpy as np import pandsa as pd import random import matplotlib.pyplot as plt MNIST데이터 자체의 난이도가 너무 낮아 틀린 모델이더라도, 정확도가 높은 경우가 생길 수 있으니 ImageNet 데이터로 재차 검증을 해야 할지도 모르겠습니다. [귀찮아서 안 할 것 같긴 합니다. 하하] 일단 데이터부터 받아줍시다! import os os.environ['KAGGLE_USERNAME'] = # username os.environ['KAGGLE_KEY'] = # key 압축 해제를 해주시고요~~ !kaggle competitions download -c .. 2022. 1. 3. 이전 1 ··· 3 4 5 6 다음