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 |
31 |
Tags
- Algorithm
- BFS
- Widget
- BOF
- Image Processing
- 백준
- FastAPI
- fastapi를 사용한 파이썬 웹 개발
- DART
- study book
- Flutter
- rao
- Stream
- Kaggle
- C++
- MDP
- 영상처리
- Computer Architecture
- Got
- pytorch
- MATLAB
- bloc
- llm을 활용 단어장 앱 개발일지
- BAEKJOON
- PCA
- ML
- ARM
- system hacking
- Dreamhack
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
Archives
- Today
- Total
Bull
[DL] Flatten 층이란? 본문
Flatten 층이란?
Flatten 층은 다차원 입력을 1차원으로 평탄화하는 데 사용되는 신경망의 한 층이다.
이 층은 입력 데이터의 모든 차원을 하나의 긴 벡터로 변환한다.
이 과정은 주로 이미지 데이터와 같이 다차원 데이터를 다루는 컨볼루션 신경망(CNN)에서 특징을 추출한 후, 완전 연결 층(Fully Connected Layer)에 입력하기 전에 사용된다.
Flatten 층을 사용함으로써, 모델이 다차원 데이터를 이해하고 처리한 뒤, 분류나 회귀 같은 다음 단계를 수행할 수 있도록 데이터를 적절한 형태로 변환한다.
TensorFlow와 Keras를 사용한 Flatten 층 코드 예시
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, Flatten, Dense
# 모델 생성
model = Sequential()
# 모델에 컨볼루션 층 추가
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
# Flatten 층 추가
model.add(Flatten())
# 완전 연결 층 추가
model.add(Dense(units=10, activation='softmax'))
# 모델 요약 출력
model.summary()
결과
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 26, 26, 64) 640 flatten (Flatten) (None, 43264) 0 dense (Dense) (None, 10) 432650 ================================================================= Total params: 433290 (1.65 MB) Trainable params: 433290 (1.65 MB) Non-trainable params: 0 (0.00 Byte) _________________________________________________________________ |
Conv2D 컨볼루션 층을 통해 입력 이미지에서 특징을 추출하고, Flatten 층을 사용하여 이 특징들을 1차원 벡터로 평탄화한 다음, Dense 층을 통해 최종적으로 분류를 수행한다.
input_shape=(28, 28, 1)는 입력 이미지가 28x28 크기에 채널이 1개(흑백 이미지)임을 의미한다.
Dense 층의 units=10은 모델이 최종적으로 10개의 클래스 중 하나를 예측한다는 것을 의미한다.
요약
Flatten 층은 다차원 데이터를 1차원 벡터로 변환하는 데 사용되며,
주로 컨볼루션 신경망(CNN)에서 특징 추출 후 완전 연결 층(Fully Connected Layer)에 데이터를 전달하기 위해 사용한다.
'Artificial Intelligence > Deep Learning' 카테고리의 다른 글
[DL] MobileNet 요약 (0) | 2024.08.05 |
---|---|
[Deep Learning] 코드를 보며 RNN 이해하기 (0) | 2024.05.30 |
[DL/유머] 인공지능이 SoftMax(소맥)먹고 취하는 사진 (1) | 2024.03.17 |
[DL/CNN] ResNet (Residual Network) (0) | 2024.03.16 |
[DL] 순전파의 bias와 MDP의 reward의 차이 (0) | 2024.03.06 |