minhui study
Tensorflow 2.0 - 각 Layer별 역할 개념 및 파라미터 파악 본문
Layer Explaination
Input Image
input으로 들어갈 DataSet을 들여다보면서 시각화까지
CNN, Convolutional Neural Network 이란 무엇일까?
다음의 그림은 CNN의 과정을 잘 나타내는 그림이다.
CNN은 Convolution과 Pooling, Dense(또는 Fully Connected)라는 세가지 종류의 계층을 통해 만들어진다.
CNN은 크게 Feature Extraction(특징 추출)과 Classification(분류) 2단계로 나뉜다.
● Feature Extraction(특징 추출) : 입력 데이터(input)의 고유한 특징을 찾아가는 단계
● Classification(분류): 찾은 특징들을 가지고 class를 고르는 단계
▶ Convolution Layer 와 Pooling Layer을 여러 곂 쌓아 특징을 충분히 추출한 후 이를 배열 형태로 만드는 Flatten layer을 통해 최종적으로 배열 형태의 Fully Connected Layer을 만들어 분류모델에 적용하게 된다.
Feature Extraction(특징 추출)
특징 추출은 초기 원시 데이터 세트를 처리하기 위해 더 관리하기 쉬운 그룹으로 축소하는 차원 감소 프로세스이다. 데이터 양을 효과적으로 줄이면서 원본 데이터 세트를 정확하고 완전하게 설명하는 방법이라고 할 수 있다.
1. Convolutoin Layer
합성곱(Convolution), 채널(Channel), 필터(Filter)&Stride, 패딩 (Padding)의 과정을 거쳐 만들어 진 Layer를 Convolution Layer라고 부른다.
filters | layer에서 나갈 때 몇개의 filter를 만들 것인지 |
kernel_size | filter(Weight)의 사이즈 |
strides | 몇 개의 pixel을 skip 하면서 훑어지나갈 것인지 ( 사이즈에도 영향을 준다. ) |
padding | zero padding을 만들 것인지. VALID는 Padding이 없고, SAME은 Padding이 있음 (사이즈에도 영향을 준다.) |
activation | Activation Function을 만들것인지. 당장 설정 안해도 Layer층을 따로 만들 수 있다. |
▶ Visualization
→ tf.keras.layers.Conc2D
→ weight 불러오기 ( layer.get_weights())
▶ Activation Function(활성 함수)
패딩까지 거친 데이터는 데이터가 가지고 있는 특징을 매우 큰값으로, 특징이 없는부분은 0에 가까운 값으로 나타내고 있습니다. 우리에겐 값의 크기가 중요한 것이 아니라 특징이 ‘‘있다”, “없다”가 중요하기 때문에 이를 바꿔주는 작업이 필요하므로 이를 Activation function이 수행한다.
→ Activation Function을 적용한 데이터를 Activation map이라고 하며 이것이 최종적인 Covolution layer의 Output이 된다.
2. Pooling (풀링)
풀링 레이어는 Convolution layer의 Output을 Input으로 사용하며, Activation Map의 크기를 줄이거나 특정 부분을 강조하는 용도로 사용된다. 어느정도 특징이 추출되었으면 모든 특징을 다 사용하는 것이 아니라 특징 중에서 특출난 것으로만 사용하겠다는 것으로 주로 사용되는 방법은 Max pooling으로 정사각 행렬의 특정 영역 안의 값의 최대값을 그 정사각 행렬의 대푯값으로 사용하는 방법이다. 여기서 사용되는 정사각 행렬은 일반적으로 Stride로 설정했던 크기와 동일하다.
※ 위에 이미지보다 아래 이미지가 데이터의 특징 중 더 특출난 부분을 뽑아낸 것을 확인할 수 있다.
3. Fully Connected Layer / Dense Layer
선택적 Pooling을 거쳐 만들어진 최종적인 Convolution layer를 Neural Network의 Input으로 사용하기 위해 행렬이 아닌 배열로 만들어주는 과정이 필요한데 Flatten Layer가 그 역할을 한다. 이 과정까지 거치면 처음 Input에서 특징만 추출한 최종적인 Layer가 완성되고, 이를 Neural Network에 적용해 최종적으로 우리가 원하는 분류를 수행하게 된다.
▶ Flatten
- tf.keras.layers.Flatten()
- CNN에서 Convolution Layer와 Pooling Layer를 반복적으로 거치면서 주요 특징만 추출되는데 이 때 추출된 주요 특징은 2차원 데이터로 이루어져 있지만 Dense와 같이 분류를 위한 학습 레이어에서는 1차원 데이터로 바꾸어서 학습이 되어야 한다. 이때 Flatten Layer가 2차원 데이터를 1차원 데이터로 바꾸는 역할을 한다.
Dense
이전 계층의 모든 뉴런과 결합된 형태의 layer(fully-connected layer)
- tf.keras.layers.Dense
▶ Dropout
네트워크가 과적합되는 경우를 방지하기 위해서 만들어진 레이어로 학습 과정에서 무작위로 뉴런의 집합을 제거하는 것이 과적합을 막는다는 아이디어에서 나왔다.
- tf.keras.layers.Dropout
▶ Build Model
Summary
'딥러닝,인공지능' 카테고리의 다른 글
Pytorch - 각 Layer별 역할 개념 및 파라미터 파악 (1) | 2021.01.12 |
---|---|
Tensorflow 2.0 - Optimizer 및 Training / Evaluating & Predicting (0) | 2021.01.12 |
Tensorflow 2.0 - dataset (MNIST) (0) | 2021.01.08 |
Tensorflow 2.0 - Tensorflow 기초 사용법 (0) | 2021.01.08 |
Image Visualization ( 이미지 시각화 기초) (0) | 2021.01.07 |