250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Django
- Docker
- 딥러닝
- Python
- Tkinter
- 웹 프로그래밍
- 그래픽 유저 인터페이스
- numpy
- Computer Vision
- Deep Learning
- 텐서플로우
- Web Programming
- 장고
- k8s
- 컴퓨터 비전
- vue.js
- paper review
- pytorch
- tensorflow
- kubernetes
- FLASK
- 파이썬
- yaml
- POD
- MariaDB
- 논문 리뷰
- 파이토치
- OpenCV
- 데이터베이스
- GUI
Archives
- Today
- Total
Maxima's Lab
[Deep Learning (딥러닝)] Normalization (정규화) & Tensorflow 2, Pytorch 코드 구현 본문
Deep Learning
[Deep Learning (딥러닝)] Normalization (정규화) & Tensorflow 2, Pytorch 코드 구현
Minima 2023. 3. 1. 12:07728x90
SMALL
안녕하세요, 오늘은 딥러닝에서 Normalization (정규화)에 대해서 알아보겠습니다.
딥러닝에서 Normalization은 입력 데이터를 조정하여 모델의 학습 성능을 개선하는 방법 중 하나입니다. 여러 종류의 Normalization 기법이 있으며, 가정 널리 사용되는 종류들은 다음과 같습니다.
- Batch Normalization (BN) : 각 미니배치의 입력 데이터를 정규화하여 평균과 분산을 조정하는 방법입니다. 이를 통해 학습 도중 발생하는 Internal Covariate Shift를 줄일 수 있으며, 더욱 안정적인 학습이 가능해집니다.
- Layer Normalization (LN) : BN과 유사하지만, 전체 미니배치 대신 레이어 내에서 평균과 분산을 계산하여 정구화하는 방법입니다. BN에 비해 데이터가 독립적이지 않아도 사용할 수 있지만, Sequence 데이터에 대한 처리에는 제한적입니다.
- Group Normalization (GN) : BN의 대안으로 제안된 방법으로, 미니배치를 여러 그룹으로 나누어 각 그룹에서 평균과 분산을 계산하여 정규화합니다. BN과 마찬가지로 CNN에서 자주 사용되며, 미니배치가 작은 경우 BN보다 성능이 우수합니다.
- Instance Normalization (IN) : 각 샘플(인스턴스)별로 평균과 분산을 계산하여 정규화하는 방법입니다. 주로 이미지 처리 분야에서 사용되며, 스타일 변환 등에 유용합니다.
- Group Instance Normalization (GIN) : GN과 IN을 합친 방법으로, 미니배치를 그룹으로 나눈 후 각 그룹 내에서 각 샘플별로 평균과 분산을 계산하여 정규화합니다. GN과 IN의 장점을 모두 취할 수 있으며, 주로 이미지 분야에서 사용됩니다.
위의 5가지 Noramalization 기법들에 대해서 Tensorflow 2, Pytorch 코드로 구현하는 방법에 대해서 알아보도록 하겠습니다.
순서대로, Tensorflow 2(BN, LN, GN, IN) 입니다.
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10)
])
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
tf.keras.layers.LayerNormalization(),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10)
])
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
tf.keras.layers.experimental.GroupNormalization(groups=4),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10)
])
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
tf.keras.layers.InstanceNormalization(),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10)
])
이어서, Pytorch (BN, LN, GN, IN) 입니다.
import torch.nn as nn
model = nn.Sequential(
nn.Conv2d(3, 32, (3,3)),
nn.BatchNorm2d(32),
nn.ReLU(),
nn.MaxPool2d((2,2)),
nn.Flatten(),
nn.Linear(5408, 10)
)
import torch.nn as nn
model = nn.Sequential(
nn.Conv2d(3, 32, (3,3)),
nn.LayerNorm((32, 28, 28)),
nn.ReLU(),
nn.MaxPool2d((2,2)),
nn.Flatten(),
nn.Linear(5408, 10)
)
import torch.nn as nn
model = nn.Sequential(
nn.Conv2d(3, 32, (3,3)),
nn.GroupNorm(4, 32),
nn.ReLU(),
nn.MaxPool2d((2,2)),
nn.Flatten(),
nn.Linear(5408, 10)
)
import torch.nn as nn
model = nn.Sequential(
nn.Conv2d(3, 32, (3,3)),
nn.InstanceNorm2d(32),
nn.ReLU(),
nn.MaxPool2d((2,2)),
nn.Flatten(),
nn.Linear(5408, 10)
)
이상으로, 딥러닝에서 Normalization에 대해서 알아보고 이를 Tensorflow 2, Pytorch로 적용해보는 방법에 대해서 알아보았습니다.
728x90
LIST
'Deep Learning' 카테고리의 다른 글
[Python, Deep Learning] Tensorflow2 Classification 모델, .onnx & .trt 변환 및 Inference 방법 (0) | 2024.07.13 |
---|---|
[Deep Learning (딥러닝)] Label Smoothing 개념 + Tensorflow 2 적용 (0) | 2023.10.28 |
[Deep Learning (딥러닝)] Loss Function (손실 함수) (0) | 2022.07.04 |
Comments