Programing/R- programming

R deep learning with Keras

sosal 2018. 6. 20. 08:46
반응형

/*

 http://sosal.kr/
 * made by so_Sal
 */


Data 분석은 주로 R,

딥러닝 모델 구현은 Python을 이용했었다.


파이썬은 General 한 프로그램을 구현하기엔 좋지만,

데이터를 분석하기에는 불편한 점이 굉장히 많다.


데이터 분석 중간 중간마다 어떤 process를 거쳤을 때, 

중간 분석 과정에서 결과가 어떻게 나오는지 상세히 확인해줄 필요가 많은데

Python은 실시간으로 데이터의 특징을 파악하기엔 불편한 점이 너무 많다.

특히 Visualization도 굉장히 불편하고..


(물론 불가능한 건 아니지만, 개인적으로 시간과 노력이 R에 비해서 5배 이상은 더 드는 것 같다.)



그런데 이제는 딥러닝도 R로 구현이 가능해졌다 !!

KERAS 덕분에..



GPU와 연동때문에, 딥러닝은 Python을 사용했었는데

이젠 R Keras r-package에서 NVIDIA GPU + CUDA + cuDNN 조합으로

딥러닝이 가능해졌다.



library(keras)

mnist <- dataset_mnist()

x_train <- mnist$train$x

y_train <- mnist$train$y

x_test <- mnist$test$x

y_test <- mnist$test$y


# reshape

x_train <- array_reshape(x_train, c(nrow(x_train), 784))

x_test <- array_reshape(x_test, c(nrow(x_test), 784))

# rescale

x_train <- x_train / 255

x_test <- x_test / 255


y_train <- to_categorical(y_train, 10)

y_test <- to_categorical(y_test, 10)



model <- keras_model_sequential() 

model %>% 

  layer_dense(units = 256, activation = 'relu', input_shape = c(784)) %>% 

  layer_dropout(rate = 0.4) %>% 

  layer_dense(units = 128, activation = 'relu') %>%

  layer_dropout(rate = 0.3) %>%

  layer_dense(units = 10, activation = 'softmax')


summary(model)


model %>% compile(

  loss = 'categorical_crossentropy',

  optimizer = optimizer_rmsprop(),

  metrics = c('accuracy')

)


history <- model %>% fit(

  x_train, y_train, 

  epochs = 30, batch_size = 128, 

  validation_split = 0.2

)







GPU를 R에서 실제로 사용되는 모습



history 변수를 자동으로 ggplot으로 그려준다.




앞으로 이미지 분석조차도, python보다는 R을 많이 쓸 것 같다.

http://sosal.kr/1085


Image augmentation도, 혹은 Face detection같은 MS API도 구현하기가 굉장히 쉽다.

그리고 실시간으로 plot을 그리거나 데이터를 확인하는 과정도 매우 간결하다.


파이썬의 이미지 plotting은 정말 극혐 수준 ㅠㅠ