Instalación de paquetes
# install.packages("keras") library(keras) use_session_with_seed(1,disable_parallel_cpu = FALSE)
Generación del conjunto de entrenamiento
# Cargar datos iris desordenados (tipos de flores con sus diferentes características) data = iris[sample(nrow(iris)),] head(data)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
40 5.1 3.4 1.5 0.2 setosa
56 5.7 2.8 4.5 1.3 versicolor
85 5.4 3.0 4.5 1.5 versicolor
134 6.3 2.8 5.1 1.5 virginica
30 4.7 3.2 1.6 0.2 setosa
131 7.4 2.8 6.1 1.9 virginica
# Indicar las variables predictoras x = data[,1:4] # Normalizar valores de variables predictoras x = as.matrix(apply(x, 2, function(x) (x-min(x))/(max(x) - min(x))))
# Indicar la variable categórica a predecir y = data[, "Species"] # Crear caracterisiticas ficticias una por cada categoría levels(y) = 1:length(y) y = to_categorical(as.integer(y) - 1 , num_classes = 3)
Definir el modelo
# Crear el modelo secuencial model = keras_model_sequential() # Definir capas del modelo # Crear el modelo secuencial model = keras_model_sequential() # Definir capas del modelo model %>% # La capa de entrada tendrá el mismo número de entradas que el total de variables predictoras layer_dense(input_shape = ncol(x), units = 10, activation = "relu") %>% # Las capas intermedias buscan caracteristicas asociadas a los datos layer_dense(units = 8, activation = "relu") %>% # La capa de salida tendrá el mismo número de salidas que las categorías a predecir layer_dense(units = 3, activation = "softmax") # Visualizar el modelo definido summary(model)
_____________________________________________________________________
Layer (type) Output Shape Param #
=====================================================================
dense_1 (Dense) (None, 10) 50
_____________________________________________________________________
dense_2 (Dense) (None, 8) 88
_____________________________________________________________________
dense_3 (Dense) (None, 3) 27
=====================================================================
Total params: 165
Trainable params: 165
Non-trainable params: 0
Compilar el modelo
# Ejecutar la red neuronal model %>% compile( loss = 'categorical_crossentropy', optimizer = optimizer_rmsprop(), metrics = c('accuracy') )
Entrenar el modelo
# Entrenar el modelo con el dataset generado fit = model %>% fit( x = x, y = y, shuffle = T, batch_size = 10, validation_split = 0.2, epochs = 150, verbose = 1 ) plot(fit)
# Entrenar el modelo con el dataset generado
fit = model %>%
fit(
x = x,
y = y,
shuffle = T,
batch_size = 10,
validation_split = 0.2,
epochs = 150,
verbose = 1
)
plot(fit)
Train on 120 samples, validate on 30 samples
Epoch 1/150
120/120 [==============================] - 0s 2ms/step - loss: 1.0946 - acc: 0.3583 - val_loss: 1.0875 - val_acc: 0.3000
Epoch 2/150
120/120 [==============================] - 0s 184us/step - loss: 1.0575 - acc: 0.5333 - val_loss: 1.0565 - val_acc: 0.6000
Epoch 3/150
120/120 [==============================] - 0s 200us/step - loss: 1.0287 - acc: 0.6833 - val_loss: 1.0324 - val_acc: 0.6000
Epoch 4/150
120/120 [==============================] - 0s 191us/step - loss: 1.0039 - acc: 0.6833 - val_loss: 1.0102 - val_acc: 0.6000
Epoch 5/150
120/120 [==============================] - 0s 191us/step - loss: 0.9810 - acc: 0.6833 - val_loss: 0.9863 - val_acc: 0.6000
E
Hola, estoy intentando trasladar a R un ejercicio que he realizado en Python pero al realizar el fit() me aparece un error que dice list object has no attribute dtype. En concreto habla de la llamada a la función py_get_attr_impl(x,name,silent)
Tienes idea porqué ocurre esto?
Si crees que me puedes ayudar , si es posible me mandas un email y te mando el código si hace falta. Te tengo puesto en mis ejercicios como referencia!!!
Mil gracias!