Keras in R
https://keras.rstudio.com/articles/examples/index.html
https://github.com/rstudio/cheatsheets/raw/master/keras.pdf
빠른 구현에 초점이 맞춰진, Human이 이해하기 쉬운 Neural networks API
– CPU/ GPU 에 대해 같은 Code를 사용한다.
– Deep learning 모델을 빠르게 prototype할수 있는 쉬운 API
– 여러 back-ends (TensorFlow, CNTK, or Theano.)에서 실행가능. (default는 TensorFlow)
Keras Template by Sixx
source(file.path(getwd(),"../00.global_dl.R")) ### Title: --- --- --- -- --- --- --- --- --- --- --- --- --- --- --- --- --- -- # library(reticulate) library(keras) #.rs.restartR() # cmd+shift+F10 use_condaenv(condaenv='sixxDL', required=T) #cf.> use_python, use_virtualenv, use_miniconda use_python(python="~/.local/share/r-miniconda/envs/sixxDL/bin/python" ) ###### For mac ####### #use_backend(backend="plaidml") # (cf. "tensorflow", "cntk", "theano") ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Problem definition ---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` ` Load Input data (X, Y) ------------------------------------------------- ## learning: Supervised / Unsupervised / Self-supervised / Reinforcement ## classification(binary, Multiclass), regression (scala, vector), clustering .. ## 기본가정: 미래에도 과거와 같은 패턴일 것이다 (non-stationary problems) ## 입력데이터에 따라 결과를 예측할수 있다. ## 입력데이터는 충분한 정보를 제공한다. ### ` ` EDA / plotting --------------------------------------------------------- ### ` ` Preprocess ------------------------------------------------------------- ## Vectorization: 데이터는 tensor 형식이어야한다. ## Rrescale : 일반적으로 [-1,1] 또는 [0,1] ## Normalization: X의 단위 맞춤 ## Missing Value ## Feature engineering ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Train the model ---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` ` Build/Reshape/complie the model ---------------------------------------- ## Problem type:Last-layer activation: Loss function ## Binary classification : sigmoid :binary_crossentropy ## Multiclass, single-label classification:softmax : categorical_crossentropy ## Multiclass, multilabel classification:sigmoid: binary_crossentropy ## Regression to arbitrary values :None: mse ## Regression to values between 0 and 1:sigmoid: mse or binary_crossentropy ### ` ` Train(fitting) the model : history, summary ---------------------------- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Evaluation with baseline---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` ` Evaluate accuracy ------------------------------------------------------- ### ` ` Improve the model ------------------------------------------------------- ### ` ` Overfitting and underfitting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Reducing the network’s size/ Adding weight regularization / Adding dropout ## 평가지표(Metric) = measure of success ~~~~ ## balanced-classification problems: Accuracy, ROC AUC(receiver operating characteristic curve, Area Under ROC) ## class-imbalanced classification problem: Accuracy, precision-Recall(재현율) ## ranking/ multilabel classification problem: mAP(mean average precision) ## evaluation protocol ~~~~ ## 데이터 충분 : hold-out validation set ## 데이터 부족 : K-fold CV(cross-validation) ## 데이터 소량 : iterated K-fold CV ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Tune the model---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` ` developing a model that overfits ------------------------------------------- ## Add layers. ## Make the layers bigger. ## Train for more epochs. ### ` ` Regularizing & Tuning your hyperparameters # Add dropout. # Try different architectures: add or remove layers. # Add L1 and/or L2 regularization. # Try different hyperparameters (such as the number of units per layer / the learning rate of the optimizer) # Optionally, iterate on feature engineering: add new features, or remove features ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Make predictions ---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` ` explain Model ------------------------------------------------------------ ### ` ` NEW DATA predictions -----------------------------------------------------
###### Title: ~~~ source(file.path(getwd(),"../00.global_dl.R")) ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### 10. Load data ---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` === Raw Data ------------------------------------------------------------- ### ` === EDA ------------------------------------------------------------------ ### ` === Preprocess : Normalize / rescale / ---------------------------------- ### ` === INPUT LAYER ---------------------------------------------------------- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### 20. Train the model ---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` === Build/Reshape/complie the model -------------------------------------- ### ` === Train(fitting) the model : history, summary -------------------------- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### 30. Evaluation ---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` === Evaluate accuracy ---------------------------------------------------- ### ` === Improve the model ---------------------------------------------------- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### 40. Make predictions ---- ###### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ### ` === explain Model -------------------------------------------------------- ### ` === NEW DATA predictions -------------------------------------------------
# Library ---------------------------------------------------------------------- pList<- c( 'tidyverse', 'data.table','fst', 'stringr', 'glue', 'lubridate', 'anytime','hms', 'zoo', # DateTime manipulation 'egg', 'plotly', 'hrbrthemes', 'ggpmisc', 'reticulate','keras' ) pList_new <- pList[!(pList %in% installed.packages()[,"Package"])] if(length(pList_new)){ install.packages(pList_new, dependencies=T) sapply(pList, require, character.only=T) } else{ sapply(pList, require, character.only=T) } rm(pList,pList_new) use_condaenv(condaenv='sixxDL', required=T) if (Sys.info()["sysname"]=="Darwin"){ \tuse_backend(backend="plaidml") } else { \tuse_backend(backend="tensorflow") # cf. "cntk", "theano" } # Set CONSTANT Value --------------------------------------------------------------- options(encoding="UTF-8") options(digits=16, scipen=666, max.print=666, digits.secs=6) Pjt_PATH =getwd() DATA_PATH=file.path("~","DATA",str_split(Pjt_PATH, "/")[[1]] %>% tail(1)) ifelse(dir.exists(DATA_PATH), FALSE, dir.create(DATA_PATH)) theme_set( hrbrthemes::theme_ipsum(base_size=9) + theme( #legend.position = "none", #axis.ticks = element_blank(), #panel.grid = element_blank() panel.background = element_rect(fill="white") ) ) # Function --------------------------------------------------------------------- uF_checkFolder <- function(Folder){ ifelse(dir.exists(Folder), FALSE, dir.create(Folder)) }
https://keras.rstudio.com/
https://www.tensorflow.org/guide/keras/overview?hl=ko( python)
개요
What is TensorFlow ?
복잡한 계산을 여러개의 GPU/ CPU가 수행하게 하는 ML의 Open-source 라이브러리
by Google Brain Team.
What is Keras ?
여러 back-end들(TensorFlow, CNTK, or Theano) 위에서 동작할수 있는 Neural Networks API.
CNN, RNN같은 어려운 model을 쉽게 build할 수 있게 해준다.
- DeepLearning 모델을 개발할수 있는 고급 구성요소를 제공하는 모델 수준 라이브러리
- 저수준 연산(Tensor연산 , 미분...)은 처리하지 않는다.
install
#install.packages('reticulate') library(reticulate) ###### For Ubutun ####### ###### ~~~~~~~~~~~~~~~~~~~~~~~ miniconda --------------------------------------- ###### 10. Install miniconda --------------------------------------------------- # install_miniconda() # miniconda_path() # "/home/oschung/.local/share/r-miniconda" if (Sys.getenv('RETICULATE_MINICONDA_PATH')=="") { \tSys.setenv('RETICULATE_MINICONDA_PATH'=miniconda_path()) } else { \tSys.getenv('RETICULATE_MINICONDA_PATH') } # Sys.setenv(RETICULATE_PYTHON = "python/bin/python") ###### 20. Create/Add my conda(virtual)env ------------------------------------- # conda_binary() # "/home/oschung/.local/share/r-miniconda/bin/conda" # conda_create(envname="sixxDL") # $ conda create --name sixxDL python=3.6 # $ conda activate sixxDL # $ conda install -c conda-forge scipy=1.4.1 # conda_remove(envname="sixxDL") # conda_remove(envname="sixxDL", conda=conda_binary()) # conda_list() # conda_list(conda=conda_binary()) ###### 30. Activate my conda(virtual)env --------------------------------------- use_condaenv(condaenv='sixxDL', required=T) #cf.> use_python, use_virtualenv, use_miniconda #use_python(python="~/.local/share/r-miniconda/envs/sixxDL/bin/python" ) ###### 40. ETC ----------------------------------------------------------------- py_config() # py_install("pandas") # py_install("matplotlib") # py_install("scikit-learn") #.rs.restartR() # cmd+shift+F10 ###### ~~~~~~~~~~~~~~~~~~~~~~~ Keras ------------------------------------------- # install.packages("keras") library(keras) #install_keras(method="conda", tensorflow="gpu")
#install.packages('reticulate') library(reticulate) ###### For mac ####### ###### ~~~~~~~~~~~~~~~~~~~~~~~ miniconda --------------------------------------- ###### 10. Install miniconda --------------------------------------------------- # install_miniconda() # miniconda_path() if (Sys.getenv('RETICULATE_MINICONDA_PATH')=="") { \tSys.setenv('RETICULATE_MINICONDA_PATH'=miniconda_path()) } else { \tSys.getenv('RETICULATE_MINICONDA_PATH') } # Sys.setenv(RETICULATE_PYTHON = "python/bin/python") ###### 20. Create/Add my conda(virtual)env ------------------------------------- # conda_binary() # conda_create(envname="sixxDL") # $ conda create --name sixxDL python=3.6 # $ conda activate sixxDL # $ conda install -c conda-forge scipy=1.4.1 # conda_remove(envname="sixxDL") # conda_remove(envname="sixxDL", conda=conda_binary()) # conda_list() # conda_list(conda=conda_binary()) ###### 30. Activate my conda(virtual)env --------------------------------------- use_condaenv(condaenv='sixxDL', required=T) #cf.> use_python, use_virtualenv, use_miniconda ###### 40. ETC ----------------------------------------------------------------- py_config() # py_install("pandas") # py_install("matplotlib") # py_install("scikit-learn") #.rs.restartR() # cmd+shift+F10 ###### ~~~~~~~~~~~~~~~~~~~~~~~ Keras ------------------------------------------- # install.packages("keras") library(keras) # install_keras(method="conda", tensorflow="gpu") # tensorflow::install_tensorflow(method="conda") # conda_install('sixxDL', 'plaidml-keras') use_backend(backend="plaidml") # (cf. "tensorflow", "cntk", "theano")