3. Keras 설치
PyPI를 이용해 설치
$ pip3 install keras
Keras설정 편집
{
"image_dim_ordering": "tf",
"floatx": "float32",
"epsilon": 1e-07,
"backend": "tensorflow"
}
$ nano ~/.keras/keras.json (nano editor를 이용)
4. Keras를 이용한 mnist테스트
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import Adam
from keras.utils import np_utils
# MNIST 데이터 읽어 들이기
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 데이터를 float32자료형으로 변환하고 정규화
X_train = X_train.reshape(60000, 784).astype("float32")
X_test = X_test.reshape(10000, 784).astype("float32")
X_train /= 255
X_test /= 255
# 레이블 데이터를 0~9까지의 카테고리를 나타내는 배열로 변환
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
# 모델 구조 정의
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(512))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(10))
model.add(Activation("softmax"))
# 모델 구축
model.compile(
loss='categorical_crossentropy',
optimizer=Adam(),
metrics=["accuracy"]
)
# 데이터 훈련
hist = model.fit(X_train, y_train)
# 테스트 데이터로 평가
score = model.evaluate(X_test, y_test, verbose=1)
print("loss=", score[0])
print("accuracy=", score[1])
데이터를 [60000][784]배열과 float32타입으로 변환
Adam optimizer
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
ex) 5 > [ 0 0 0 0 0 1 0 0 0 0 ]
0 > [ 1 0 0 0 0 0 0 0 0 0 ]
Dense : 입출력 형태설정. 이전 레이어의 출력형태가 다음 레이어의 입력형
태가 되므로 첫 레이어만 입력형태를 설정해주면 된다.
Activation : 레이어의 활성화 함수
ReLU : Rectified Linear Unit
max(features, 0)
순차적으로 레이어를 정의해 나간다.
Dropout : 오버피팅을 막기 위한 무작위 탈락값
값을 0~1사이로 정규화