Keras
둘러보기로 가기
검색하러 가기
Tensorflow, Theano, CNTK 등을 사용하기 편하게 해주는 Keras를 정리 한다.
목차
Model
Layer
from keras.models import Sequential model = Sequential()
Dense
from keras.layers import Dense model.add(Dense(units=128, activation='relu', input_shape=(x_train.shape[1], ))) model.add(Dense(units=1))
Activation
은닉층에서 사용하는 Activation
- relu
- linear. 계산된 값을 그대로 출력으로 보냄
출력층에서 사용하는 Activation
- sigmoid. 이진 분류
- softmax. 다중 분류
Loss
- categorical_crossentropy : 분류시 사용
- mse : 값 예측시 사용
model.compile(loss='categorical_crossentropy', optimizer=sgd(lr=0.01, momentum=0.9), metrics=['accuracy']) model.compile(loss='mse', optimizer=sgd(lr=0.01, momentum=0.9), metrics=['accuracy'])
사용자 정의 loss 함수 지정
import numpy as np import tensorflow as tf def ml_mean_squared_error(y, pred): return tf.sqrt(np.mean(tf.square(y - pred), axis=-1)) model.compile(loss=ml_mean_squared_error, optimizer=Adam(lr=0.01), metrics=['accuracy'])
Optimizer
- sgd (확률적 경사 하강법)
- 학습률 (LR, Learning Rate) : 0.1, 0.01
- momentum : 학습률 값을 고정하고 모멘텀 항으로 매개변수의 변경값을 조정
- nesterov : True. 순수한 momentum을 약간 변형함
from keras.optimizers import SGD model.compile(loss='mse', optimizer=SGD(lr=0.1, momentum=0.9, nesterov=True), metrics=['accuracy'])
- adagrad : 학습률을 조정하며 학습
from keras.optimizers import Adagrad model.compile(loss='mse', optimizer=Adagrad(lr=0.01, epsilon=1e-6), metrics=['accuracy'])
- adadelta : adagrad을 보완
from keras.optimizers import Adadelta model.compile(loss='mse', optimizer=Adadelta(rho=0.95), metrics=['accuracy'])
- rmsprop : adagrad을 보완
from keras.optimizers import RMSprop model.compile(loss='mse', optimizer=RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0), metrics=['accuracy'])
- adam : 값을 예측할 경우 사용
from keras.optimizers import Adam model.compile(loss='mse', optimizer=Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0), metrics=['accuracy'])
- adamax
- nadam
참고 문헌
Metrics
- accuracy : 정확도
Predict
사용자 매뉴얼
사용 라이브러리 지정
"c:/사용자/{사용자_이름}/.keras/keras.json" 파일에서 backend를 지정 한다.
- backend : tensorflow, theano, cntk
{ "backend": "tensorflow", "image_data_format": "channels_last", "floatx": "float32", "epsilon": 1e-07 }
Device 지정
Device 목록 확인
from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
Device 사용 지정
import keras.backend.tensorflow_backend with tensorflow_backend .tf.device('/gpu:0'): #--- Keras 코드
Trouble Shooting
용어 사전
딥러닝 모델
- FNN (Feedforward Neural Network)
- CNN (Convolutional Neural Network, 합성곱 신경망) : 영상 인식
- RNN (Recurrent Neural Network, 순환 신경망) : 음성 인식, 언어 번역
- Recurrent Weight
- BPTT (Back Propagation Throuth Time)
- LSTM (Long Short Term Memory, 장단기 메모리 셀)
Activation Function (활성화 함수)
연속값
- relu
- linear
불연속값
- sigmoid : 이진 분류
- softmax : 다중 분류
Loss Function (손실 함수)
Optimizer (최적화)
기타 용어
- Machine Learning
- Deep Learning
- MSE (Mean Squared Error, 평균 제곱 오차)
- RMSE (Root Mean Squared Error, 평균 제곱근 오차)
- Gradient Decent : 경사 하강법
- Learning rate : 학습률
- Logistic Regression : 로지스틱 회귀
- Perceptron (퍼셉트론) : 신경망을 이루는 기본 단위
- y = wx + b (w. weight, 가중치, b. bias, 바이어스)
- Back Propagation : 오차 역전파
- SGD (Stochastic Gradient Descent, 확률적 경사 하강법)