Я работаю над сверточной нейронной сетью, и я хотел бы отобразить матрицу путаницы и точность модели, но безуспешно. Вот как я это делаю, может быть, вы мне поможете. У меня ошибка вывода: test_array имеет разную длину. Что-то у меня не получается. Любая помощь будет оценена. Спасибо
#Extract pictures
trainData <- extract_feature("train/", width, height)
testData <- extract_feature("test1/", width, height, labelsExist = F)
# Fix structure for 2d CNN
train_array <- t(trainData$X)
dim(train_array) <- c(50, 50, nrow(trainData$X), 1)
# Reorder dimensions
train_array <- aperm(train_array, c(3,1,2,4))
test_array <- t(testData)
dim(test_array) <- c(50, 50, nrow(testData), 1)
# Reorder dimensions
test_array <- aperm(test_array, c(3,1,2,4))
model <- keras_model_sequential()
model %>%
layer_conv_2d(kernel_size = c(3, 3), filter = 32,
activation = "relu", padding = "same",
input_shape = c(50, 50, 1),
data_format = "channels_last") %>%
layer_conv_2d(kernel_size = c(3, 3), filter = 32,
activation = "relu", padding = "valid") %>%
layer_max_pooling_2d(pool_size = 2) %>%
layer_dropout(rate = 0.25) %>%
layer_conv_2d(kernel_size = c(3, 3), filter = 64, strides = 2,
activation = "relu", padding = "same") %>%
layer_conv_2d(kernel_size = c(3, 3), filter = 64,
activation = "relu", padding = "valid") %>%
layer_max_pooling_2d(pool_size = 2) %>%
layer_dropout(rate = 0.25) %>%
layer_flatten() %>%
layer_dense(units = 50, activation = "relu") %>%
layer_dropout(rate = 0.25) %>%
layer_dense(units = 1, activation = "sigmoid")
summary(model)
model %>% compile(
loss = 'binary_crossentropy',
optimizer = "adam",
metrics = c('accuracy')
)
history <- model %>% fit(
x = train_array, y = as.numeric(trainData$y),
epochs = 30, batch_size = 100,
validation_split = 0.2
)
plot(history)
# Compute probabilities and predictions on test set
predictions <- predict_classes(model, test_array)
probabilities <- predict_proba(model, test_array)
#Display Confusion Matrix
predict_probs <- predictions <- predict(model, test_array)
predicted_labels <- max.col(t(predict_probs)) - 1
table(test_array[, 1], predicted_labels)
#Display accuracy
sum(diag(table(test_array[, 1], predicted_labels)))/2500