# https://blog.rstudio.com/2017/09/05/keras-for-r/ library(keras) # #install_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 dim(x_train) <- c(nrow(x_train), 784) dim(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) batch_size = 128 num_classes = 10 epochs = 20 model <- keras_model_sequential() model %>% layer_dense(units = 512, activation = "relu", input_shape = c(784)) %>% layer_dropout(rate = 0.2) %>% layer_dense(units = 512, activation = "relu") %>% layer_dropout(rate = 0.2) %>% layer_dense(units = num_classes, activation = "softmax") summary(model) model %>% compile( loss = "categorical_crossentropy", optimizer = optimizer_rmsprop(), metrics = c("accuracy") ) history <- model %>% fit( x_train, y_train, epochs = epochs, batch_size = batch_size, verbose = 1, validation_split = 0.2 ) score = model %>% evaluate(x_test, y_test, verbose=0) print(paste('Test loss:', score$loss)) print(paste('Test accuracy:', score$acc)) plot(history) y_pred = model %>% predict_classes(x_test)