Rkeras
1.让我们测试一波:通过
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_train2 <- array_reshape(x_train, c(nrow(x_train), 784)) x_test2 <- array_reshape(x_test, c(nrow(x_test), 784)) # rescale
x_train3 <- x_train2 / 255 x_test3 <- x_test2 / 255
y_train3 <- to_categorical(y_train, 10) y_test3 <- 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)
## ___________________________________________________________________________
## Layer (type) Output Shape Param #
## ===========================================================================
## dense_1 (Dense) (None, 256) 200960
## ___________________________________________________________________________
## dropout_1 (Dropout) (None, 256) 0
## ___________________________________________________________________________
## dense_2 (Dense) (None, 128) 32896
## ____________________________________________________________________
_______
## dropout_2 (Dropout) (None, 128) 0
## ___________________________________________________________________________
## dense_3 (Dense) (None, 10) 1290
## ===========================================================================
## Total params: 235,146
## Trainable params: 235,146 ## Non-trainable params: 0
## ___________________________________________________________________________
model %>% compile(
loss = 'categorical_crossentropy', optimizer = optimizer_rmsprop(), metrics = c('accuracy') )
history1 <- model %>% fit( x_train3, y_train3, epochs = 3,
batch_size = 1600, validation_split = 0.2 )
summary(history1)
## Length Class Mode ## params 8 -none- list ## metrics 4 -none- list model %>% evaluate(x_test3, y_test3) ## $loss
## [1] 0.2004455 ##
## $acc
## [1] 0.9384
pre <- model %>% predict_classes(x_test3) yt <-max.col(y_test3)-1 table(pre,yt)
## yt
## pre 0 1 2 3 4 5 6 7 8 9 ## 0 961 0 8 2 0 5 9 0 6 10 ## 1 0 1122 2 2 1 1 3 14 7 6 ## 2 0 2 952 15 3 1 1 19 9 1
## 3 1 2 13 924 0 10 1 5 20 12 ## 4 0 1 13 1 934 4 10 7 12 37 ## 5 4 2 5 42 0 846 18 1 39 8 ## 6 10 4 9 1 14 11 916 0 9 1 ## 7 2 0 12 11 2 2 0 959 12 8 ## 8 2 2 15 6 3 5 0 0 846 2 ## 9 0 0 3 6 25 7 0 23 14 924
因篇幅问题不能全部显示,请点此查看更多更全内容