## ----setup, include = FALSE--------------------------------------------------- library(keras) knitr::opts_chunk$set(comment = NA, eval = FALSE) ## ----------------------------------------------------------------------------- # library(keras) # # keras_model_simple_mlp <- function(num_classes, # use_bn = FALSE, use_dp = FALSE, # name = NULL) { # # # define and return a custom model # keras_model_custom(name = name, function(self) { # # # create layers we'll need for the call (this code executes once) # self$dense1 <- layer_dense(units = 32, activation = "relu") # self$dense2 <- layer_dense(units = num_classes, activation = "softmax") # if (use_dp) # self$dp <- layer_dropout(rate = 0.5) # if (use_bn) # self$bn <- layer_batch_normalization(axis = -1) # # # implement call (this code executes during training & inference) # function(inputs, mask = NULL, training = FALSE) { # x <- self$dense1(inputs) # if (use_dp) # x <- self$dp(x) # if (use_bn) # x <- self$bn(x) # self$dense2(x) # } # }) # } ## ----------------------------------------------------------------------------- # library(keras) # # # create the model # model <- keras_model_simple_mlp(num_classes = 10, use_dp = TRUE) # # # compile graph # model %>% compile( # loss = 'categorical_crossentropy', # optimizer = optimizer_rmsprop(), # metrics = c('accuracy') # ) # # # Generate dummy data # data <- matrix(runif(1000*100), nrow = 1000, ncol = 100) # labels <- matrix(round(runif(1000, min = 0, max = 9)), nrow = 1000, ncol = 1) # # # Convert labels to categorical one-hot encoding # one_hot_labels <- to_categorical(labels, num_classes = 10) # # # Train the model # model %>% fit(data, one_hot_labels, epochs=10, batch_size=32)