Na ostatnim spotkaniu STWURa uczyliśmy się pracować z Keras w R. Zachęcamy do zapoznania się z materiałami.

Co to jest Keras?

Biblioteka (API) do pracy z sieciami neuronowymi implementowanymi w innych narzędziach (TensorFlow, Theano).

Implementacje

Keras jest napisany w Pythonie.

Implementacje w R (https://github.com/rstudio/keras oraz https://github.com/statsmaths/kerasR) wykorzystują pakiet reticulate, aby komunikować się z Pythonem.

Powoduje to konieczność zarządzania jednocześnie sesją R i sesją Pythona.

# to ziarno losowosci dziala tylko dla sesji R
set.seed(30)

# to ziarno losowosci dziala zarowno dla sesji R jak i sesji Pythona
keras::use_session_with_seed(30)

Praca w Keras…

…jest prosta i przyjemna.

library(keras)
model <- keras_model_sequential()

model %>% 
  layer_dense(units = 8, activation = 'relu', input_shape = c(12)) %>%
  layer_dropout(rate = 0.5) %>%
  layer_dense(units = 8, activation = 'relu') %>%
  layer_dropout(rate = 0.5) %>%
  layer_dense(units = 1, activation = 'sigmoid') %>% 
  compile(
    loss = 'mean_squared_error',
    optimizer = 'sgd',
    metrics = c('accuracy')
  )

Praca w Keras

Pojedyncza warstwa sieci neuronowej:

layer_dense(units = 8, activation = 'relu', input_shape = c(12))
  • units: liczba neuronów,
  • activation: funkcja aktywacji,
  • input_shape: liczba kolumn.

Praca w Keras

Zapobiega przeuczeniu.

layer_dropout

Stabilność predykcja

plot of chunk unnamed-chunk-5

Aktualizacja obiektów

Obiekty w R nie są aktualizowane:

x <- c(27, 3, 1988)
x*2
## [1]   54    6 3976
x
## [1]   27    3 1988

Aktualizacja obiektów

Obiekty w Keras są aktualizowane:

library(keras)
model <- keras_model_sequential()
summary(model)
## ___________________________________________________________________________
## Layer (type)                     Output Shape                  Param #     
## ===========================================================================
## Total params: 0
## Trainable params: 0
## Non-trainable params: 0
## ___________________________________________________________________________

Aktualizacja obiektów

model %>% layer_dense(units = 4, input_shape = c(12))
summary(model)
## ___________________________________________________________________________
## Layer (type)                     Output Shape                  Param #     
## ===========================================================================
## dense_1 (Dense)                  (None, 4)                     52          
## ===========================================================================
## Total params: 52
## Trainable params: 52
## Non-trainable params: 0
## ___________________________________________________________________________

Zapisywanie obiektów

save_model_hdf5(model, filepath = "my_model.h5")

cat(model_to_yaml(model), file = "my_model.yaml")

Podziękowania

https://tinyurl.com/stwur7 - kody i dane do dzisiejszego spotkania.

Dziękujemy Wydziałowi Biotechnologii UWr i firmie Kruk SA za wspieranie spotkań STWURa.

Hackathon

bankITpu: https://challengerocket.com/bankitup

Hackathon: analiza danych z sektora finansowego. Darmowe jedzenie i wysokie nagrody! Michał Kurtys koordynuje zespoły STWURowiczów.