Я пытался построить модель, используя керасы в обучении модели предиктора слова из r: 6 букв на наборе данных emnist-byclass (62 category = (az); (AZ); (0-9)).
Я пытался использовать CNN, используя conv_d2 & max_poolimg, но мои данные не подходят.Форма ввода = 784, и она не работает.
Как я могу изменить свой поезд x, чтобы он подходил?Прочитайте о функции изменения формы, но не удалось.
Попытка использовать другую модель только с использованием плотных слоев и выпадений, но точность была низкой.
data <- list()
data <- EMNIST_read() # read emnist-myclass data
train_x <- data$x_train
train_y <- data$y_train
test_x <- data$x_test
test_y <- data$y_test
# dim(train_x)
[1] 697932 784
# > dim(train_y)
[1] 697932 62
#converting the target variable to once hot encoded vectors using keras inbuilt function
train_y <- to_categorical(train_y,62)
test_y <- to_categorical(test_y,62)
#defining a keras sequential model
model <- keras_model_sequential()
model %>%
layer_conv_2d(filters = 32, kernel_size = c(3,3), activation = 'relu') %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_conv_2d(filters = 64, kernel_size = c(3,3), activation = 'relu') %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_conv_2d(filters = 64, kernel_size = c(3,3), activation = 'relu') %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_conv_2d(filters = 64, kernel_size = c(3,3), activation = 'relu') %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_conv_2d(filters = 64, kernel_size = c(3,3), activation = 'relu') %>%
layer_flatten() %>%
layer_dropout(rate = 0.4) %>%
layer_dense(units = 128, activation = 'relu') %>%
layer_dense(units = 62, activation = 'softmax')
model %>% compile(
optimizer = 'adam',
loss = 'categorical_crossentropy',
metrics = c('accuracy')
)
#fitting the model on the training dataset
model %>% fit(train_x, train_y, epochs = 10, batch_size = 256, validation_split = 0.1,
callbacks = callback_early_stopping(monitor = "val_acc", patience = 6, mode = "min"))
получила эту ошибку:
Error in py_call_impl(callable, dots$args, dots$keywords) :
ValueError: Input 0 of layer conv2d is incompatible with the layer: expected ndim=4, found ndim=2. Full shape received: [None, 784]