이미지를 ANN에 input해 학습하려면 2차원 또는 3차원으로 되어있는 이미지의 shape을 1차원으로 바꿔줘야 한다.
1. keras.layers.Flatten()
- tensorflow에서 제공하는 Faltten() 함수를 사용하면 2차원, 3차원 input이 들어왔을때 알아서 1차원으로 바꿔준다.
- Flatten() 을 사용하면 모델링 시 input_shape도 자동으로 정해주기 때문에 입력할 필요가 없다.
from keras.layers import Flatten
model.add(Flatten())
전체 모델 예시
import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Flatten
def build_model():
model = Sequential()
model.add(Flatten())
model.add(Dense(128, 'relu'))
model.add(Dense(64, 'relu'))
model.add(Dense(10, 'softmax'))
model.compile('adam', 'sparse_categorical_crossentropy', ['accuracy'])
return model
2. 직접 flatten 하기
- 직접 행렬의 shape을 확인하고 1차원으로 reshape 해준다.
- 자체적으로 flatten 처리를 할 경우, 모델링 시 input_shape를 꼭 알려줘야 한다.
X_train.shape
>>> (60000, 28, 28)
X_train = X_train.reshape(60000, 28 * 28)
# 또는
X_train = X_train.reshape(60000, -1)
X_train.shape
>>> (60000, 784)
전체 모델 예시
def build_model():
model = Sequential()
model.add(Dense(128, 'relu', input_shape=(784,)))
model.add(Dense(64, 'relu'))
model.add(Dense(10, 'softmax'))
model.compile('adam', 'sparse_categorical_crossentropy', ['accuracy'])
return model
'Machine Learning > Deep Learning' 카테고리의 다른 글
Tensorflow - 레이블인코딩 된 y값을 원핫인코딩으로 바꾸기 (0) | 2022.12.31 |
---|---|
Tensorflow - model을 파일로 저장하고 불러오는 방법 (0) | 2022.12.30 |
Tensorflow - Callback 클래스를 이용해서, 원하는 조건이 되면 학습을 멈추기 (0) | 2022.12.29 |
Tensorflow - Dropout 사용법 (0) | 2022.12.29 |
Tensorflow - Overfitting, Underfitting 개념 (0) | 2022.12.29 |