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
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.