"Keras"의 두 판 사이의 차이

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기
잔글 (→‎AI)
 
(같은 사용자의 중간 판 40개는 보이지 않습니다)
1번째 줄: 1번째 줄:
Keras를 정리 한다.
+
[[Tensorflow]], [[Theano]], [[CNTK]] 등을 사용하기 편하게 해주는 Keras를 정리 한다.
  
 
== Model ==
 
== 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 ===
19번째 줄: 32번째 줄:
 
  model.compile(loss='categorical_crossentropy', optimizer=sgd(lr=0.01, momentum=0.9), metrics=['accuracy'])
 
  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'])
 
  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 ===
 
=== Optimizer ===
24번째 줄: 46번째 줄:
 
* sgd (확률적 경사 하강법)
 
* sgd (확률적 경사 하강법)
 
:* 학습률 (LR, Learning Rate) : 0.1, 0.01
 
:* 학습률 (LR, Learning Rate) : 0.1, 0.01
 +
:* momentum : 학습률 값을 고정하고 모멘텀 항으로 매개변수의 변경값을 조정
 +
:* nesterov : True. 순수한 momentum을 약간 변형함
 
  from keras.optimizers import SGD
 
  from keras.optimizers import SGD
 
   
 
   
  model.compile(loss='mse', optimizer=SGD(lr=0.01, momentum=0.9), metrics=['accuracy'])
+
  model.compile(loss='mse', optimizer=SGD(lr=0.1, momentum=0.9, nesterov=True), metrics=['accuracy'])
* rmsprop
+
 
 +
* 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
 +
 
 +
참고 문헌
 +
* [http://forensics.tistory.com/28 학습률 설정, 2018.01]
 +
 
 +
=== 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 ==
 +
 
 +
== 용어 사전 ==
 +
 
 +
=== AI ===
 +
 
 +
* AI (Artificial Intelligence, 인공지능)
 +
* ML (Machine Learning, 머신러닝)
 +
* Deep Learning (딥러닝)
 +
 
 +
=== 딥러닝 모델 ===
 +
 
 +
* 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 (Rectified Linear Unit)
 +
* linear
 +
 
 +
분류
 +
* sigmoid : 이진 분류
 +
* softmax : 다중 분류
 +
 
 +
=== Loss Function (손실 함수) ===
 +
 
 +
연속값
 +
* MSE (Mean Squared Error, 평균 제곱 오차)
 +
* RMSE (Root Mean Squared Error, 평균 제곱근 오차)
 +
* Cross Entropy
 +
 
 +
분류
 +
* categorical_crossentropy
 +
 
 +
=== Optimizer (최적화) ===
 +
* SGD (Stochastic Gradient Descent, 확률적 경사 하강법)
 +
:* LR (Learning Rate, 학습률)
 +
:* Momentum (모멘텀)
 
* adagrad
 
* adagrad
 
* adadelta
 
* adadelta
 +
* rmsprop
 
* adam
 
* adam
 
* adamax
 
* adamax
 
* nadam
 
* nadam
  
=== Metrics ===
+
=== 기타 용어 ===
 +
 
 +
* Logistic Regression : 로지스틱 회귀
 +
 
 +
* Perceptron (퍼셉트론) : 신경망을 이루는 기본 단위
 +
:* y = wx + b (w. weight, 가중치, b. bias, 바이어스)
  
* accuracy : 정확도
+
* Back Propagation : 오차 역전파
  
 
== 참고 문헌 ==
 
== 참고 문헌 ==

2019년 5월 14일 (화) 16:42 기준 최신판

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

용어 사전

AI

  • AI (Artificial Intelligence, 인공지능)
  • ML (Machine Learning, 머신러닝)
  • Deep Learning (딥러닝)

딥러닝 모델

  • 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 (Rectified Linear Unit)
  • linear

분류

  • sigmoid : 이진 분류
  • softmax : 다중 분류

Loss Function (손실 함수)

연속값

  • MSE (Mean Squared Error, 평균 제곱 오차)
  • RMSE (Root Mean Squared Error, 평균 제곱근 오차)
  • Cross Entropy

분류

  • categorical_crossentropy

Optimizer (최적화)

  • SGD (Stochastic Gradient Descent, 확률적 경사 하강법)
  • LR (Learning Rate, 학습률)
  • Momentum (모멘텀)
  • adagrad
  • adadelta
  • rmsprop
  • adam
  • adamax
  • nadam

기타 용어

  • Logistic Regression : 로지스틱 회귀
  • Perceptron (퍼셉트론) : 신경망을 이루는 기본 단위
  • y = wx + b (w. weight, 가중치, b. bias, 바이어스)
  • Back Propagation : 오차 역전파

참고 문헌