library(keras)
library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
model <- keras_model_sequential()
model %>%
layer_dense(units = 32, input_shape = c(4)) %>%
layer_activation('relu') %>%
layer_dense(units = 3) %>%
layer_activation('softmax')
summary(model)
## ___________________________________________________________________________
## Layer (type) Output Shape Param #
## ===========================================================================
## dense_1 (Dense) (None, 32) 160
## ___________________________________________________________________________
## activation_1 (Activation) (None, 32) 0
## ___________________________________________________________________________
## dense_2 (Dense) (None, 3) 99
## ___________________________________________________________________________
## activation_2 (Activation) (None, 3) 0
## ===========================================================================
## Total params: 259
## Trainable params: 259
## Non-trainable params: 0
## ___________________________________________________________________________
model %>% compile(
optimizer = 'rmsprop',
loss = 'categorical_crossentropy',
metrics = c('accuracy')
)
summary(model)
## ___________________________________________________________________________
## Layer (type) Output Shape Param #
## ===========================================================================
## dense_1 (Dense) (None, 32) 160
## ___________________________________________________________________________
## activation_1 (Activation) (None, 32) 0
## ___________________________________________________________________________
## dense_2 (Dense) (None, 3) 99
## ___________________________________________________________________________
## activation_2 (Activation) (None, 3) 0
## ===========================================================================
## Total params: 259
## Trainable params: 259
## Non-trainable params: 0
## ___________________________________________________________________________
# data(iris)
dataset <- iris
# as.matrix(dataset)
validation_index <- createDataPartition(dataset$Species, p=0.70, list=FALSE)
# 30% pour les données de validation
validation <- dataset[-validation_index, 1:4]
validation_labels <- dataset[-validation_index, 5]
# 70% des données pour l'entrainement et test des modèles
data <- dataset[validation_index, 1:4]
labels <- dataset[validation_index,5]
# Convert labels to categorical one-hot encoding
one_hot_labels <- to_categorical(as.numeric(labels) -1, num_classes = 3)
history <- model %>% fit(as.matrix(data), one_hot_labels, epochs=10, batch_size=10)
plot(history)

one_hot_validation_labels <- to_categorical(as.numeric(validation_labels) -1, num_classes = 3)
model %>% evaluate(as.matrix(validation), one_hot_validation_labels)
## $loss
## [1] 0.9537812
##
## $acc
## [1] 0.3333333