728x90
반응형

Machine Learning/[Kaggle Course] ML (+ 딥러닝, 컴퓨터비전) 30

[생활코딩/CNN] MaxPool2D

복습 - Pooling을 쓰는 이유 flatten을 거치면 28 ,28 이 784개의 하나의 컬럼으로 재조합된다 그럼 컬럼 수가 늘어나면서 param 수도 증가한다. param의 수는 이전 레이어의 컬럼 수와 현재 레이어의 컬럼 수를 곱하여 결정된다 +1은 bias를 의미 Conv2D를 추가하면, flatten을 마치면 컬럼 수가 급증하고 이에 따라 param 수도 많아지기에 이를 줄이기 위해 pooling을 사용 MaxPool2D conv2D 이후에 MaxPool2D를 적용한 코드 주황색 상자를 보면 24->12, 8->4로 컬럼 수가 줄어든 것을 볼 수 있다 이에 따라 dense layer의 param 수도 이전의 201,684에서 8148로 많이 줄었다. MaxPool2D 방식 feature map..

[생활코딩/CNN] Conv2D

Convolution 특정한 패턴의 특징이 어디서 나타나는지 확인하는 도구 Filter 특정 위치의 값만 그대로 가져와서 위치별로 특정한 패턴의 유무를 가져올 수 있음 filter set은 3차원 형태로 된 가중치의 모음 filter set 하나가 이미지 한 장을 만듦 (feature map) 그럼 filter set 개수만큼 feature map을 생성 Feature map filter를 통과한 이미지 tf.keras.layers.Conv2D 1. filter set을 몇개 사용할 것인가 -> filter 3개 -> feature map 3개 -> 3채널/3차원의 feature map -> Flatten으로 픽셀 단위로 n 채널을 한 줄로 바꾸어 이용 2. filter set의 사이즈 == kernel..

[생활코딩/CNN] Flatten

기초 코드 ########################### # 라이브러리 사용 import tensorflow as tf import pandas as pd ########################### # with reshape # 데이터를 준비 (독립, 종속), _ = tf.keras.datasets.mnist.load_data() #(60000,28,28) -> (60000,784) 독립 = 독립.reshape(60000, 784) # 전체 육만장의 데이터를 784의 컬럼을 가진 표의 형태로 변환 종속 = pd.get_dummies(종속) print(독립.shape, 종속.shape) # 모델의 구조 만들기 X = tf.keras.layers.Input(shape=[784]) # 독립변수x 컬..

Data Augmentation - boost classifier

가짜 데이터의 유용함 머신러닝 모델의 성능을 향상시키는 가장 좋은 방법은 더 많은 데이터로 훈련하는 것입니다. 모델이 더 많은 예제로 학습할 수록 이미지 속 차이점이나 중요한 것, 중요하지 않은 것을 잘 찾을 수 있습니다. 그렇게 모델이 새로운 데이터에서도 잘 분류하여 일반화되죠. 데이터를 더 얹는 방법 중 쉬운 방법은 가지고 있는 데이터를 사용하는 것입니다. 분류의 기준을 그대로 지키면서 가지고 있는 데이터를 변형할 수 있다면 그러한 변형을 무시할 수 있는 분류기로 성장시킬 수 있습니다. 예로 자동차의 좌측면과 우측면 사진은 보기엔 다르지만 자동차이지, 트럭이 될 수 없습니다. 그러므로 이런 뒤집힌 사진을 training data에 더해주어(augment) 분류기에게 왼쪽과 오른쪽의 차이점은 무시할 수..

Custom Convnets (Convolutional Blocks)

Simple to Refined 지난 세 수업에서 convnet이 feature extraction을 수행하는 과정을 보았습니다. 그 과정은 filter, detect, condense 연산을 차례대로 거쳐가는 것입니다. feature extraction의 한 라운드는 단순한 선이나 대비와 같은 이미지에서 비교적 간단한 feature만 추출할 수 있습니다. 수많은 분류 문제를 해결하기에 너무 간단하죠. 대신에 convnets은 이러한 추출과정을 여러번 반복합니다. 그로 인해 feature는 좀 더 복잡해지고, 더 깊은 네트워크를 여행하며 정교해집니다. Convolutional Blocks 추출을 해주는 convolutional block들의 긴 사슬을 통과하면서 진행됩니다. convolutional bl..

The Sliding Window

하나의 이미지로부터 특징을 추출하는 3가지 연산에 대해서 배워보았습니다. filter with a convolution layer detect with ReLU activation condense with a maximum pooling layer convolution과 pooling 연산은 같은 특징을 공유합니다. 둘 다 sliding window 위에서 수행하기 때문입니다. convolution에서는 이 window는 커널의 차원인 kernel_size 매개변수에 의해 결정됩니다. pooling에서는 pool_size에 의해 pooling window가 결정됩니다. convolution과 pooling 레이어 모두에게 영향을 주는 두 개의 매개변수가 있습니다. window의 strides 매개변수는 ..

Maximum Pooling - feature extraction

!!여기서 활성화 activation의 의미란, 이미지 행렬 안의 숫자값이 0이 아니고 색깔이나 의미를 가진 0 외의 숫자로 되어있다는 의미. 0이 있는 곳은 검은색으로 표시됨 이번 시간에는 convnet 속 base이 feature extraction을 수행하는 방법에 대해 보려 합니다. 이전까지 feature extraction에는 conv2d layer와 relu activation으로 2가지 과정이 일어난다고 했습니다. 이번에는 세번째 연산 과정을 보려합니다. maximum pooling을 이용한 압축(condense)입니다. 이는 케라스의 MaxPool2D layer에서 일어납니다. Condense with Maximum Pooling from tensorflow import keras from..

Convolution and ReLU

이전 시간에 convolutional classifier에는 convolutional base와 dense layer로 구성된 head가 있다고 배웠습니다. base는 이미지에서 시각적 특징을 추출하며 head는 이를 이용해 이미지를 분류합니다. 이번에는 base에 사용되는 두 종류의 layer를 배워보려 합니다. 하나는 ReLU activation을 적용한 convolutional layer이고, 다른 하나는 maximum pooling layer 입니다. 5번째 수업에서 특징 추출을 수행하는 단계에 사용되는 이러한 레이어들로 구성된 자신만의 convnet을 설계하는 법에 대해서 배울 예정입니다. 이번 시간은 ReLU activation을 적용한 convolutional layer만 보겠습니다. Fea..

Convolutional Classifier

Introduction of Computer Vision Keras로 만든 image classifier에 현대 딥러닝 네트워크를 사용합니다 자신만의 custom convnet을 설계해봅니다. Visual feature extraction 속 아이디어를 배워봅니다. model의 속도를 올리기 위해 transfer learning을 배워봅니다. data augmentation을 적용하여 dataset을 확장시켜 봅니다. 이 수업의 목표는 신경망이 자연 세계의 이미지를 어떻게 이해하는지 그 방법을 배우는 것입니다. 이는 사람이 시각적으로 처리하는 체계뱡식과 유사합니다. Convolutional Neural Networks (CNN or Convnet) 저마다 다른 구조의 convnet으로 된 레이어들을 반환..

[Kaggle Course] Binary Classification(이진 분류) - sigmoid, cross-entropy

지금까지 neural network로 'regression problems'를 어떻게 해결할 수 있는 배웠습니다. 이제 머신러닝의 또다른 골칫거리, 바로 'Classification'을 neural network에 적용해봅시다. 가장 큰 차이점은 우리가 사용했던 loss function에서, 그리고 마지막 layer에서 나온 출력값의 종류에서 찾을 수 있습니다. (저게 차이점이 아니야!) Binary Classification 두 그룹(class) 중 하나로 분류하는 것은 일반적인 머신러닝 기법입니다. 고객이 구매할 가능성이 있는지, 신용 카드 거래가 사기였는지, 우주에서 온 신호가 새로운 행성의 증거가 되는지 등, 모두 "Binary Calssification" 문제입니다. raw data에서 이 같은..

728x90
반응형