Я новичок в области глубокого обучения и столкнулся с этой ошибкой:
ValueError: Ошибка при проверке ввода: ожидалось, что conv2d_45_input имеет 4 измерения, но получил массив с формой (400, 400, 3)
Сначала я изменил размеры своих изображений до 400 * 400, а затем применил к ним функцию изменения формы, чтобы превратить их в c (400 400,3). во время подгонки моей модели он показывает, что необходимо ввести 4 измерения, но я не знаю, как сделать мои изображения 4d.
Это весь мой код r
library(keras)
install_keras()
library(tensorflow)
library(imager)
install.packages("kerasR")
library(kerasR)
library(EBImage)
setwd('C:/Users/Raman/Desktop/nutriimage')
img <- c("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg","8.jpg","9.jpg","10.jpg","11.jpg",
"12.jpg","13.jpg","14.jpg","15.jpg","16.jpg")
train <- read.csv("C:/Users/Raman/Desktop/trainy_nutri.csv")
View(train)
train$id <- NULL
train <- as.matrix(train)
colnames(train) <- NULL
images <- list()
for (i in 1:16) {images[[i]] <- readImage(img[i])}
for (i in 1:16) {images[[i]] <- resize(images[[i]],400,400)}
for (i in 1:16) {images[[i]] <- array_reshape(images[[i]],c(400,400,3))}
model <- keras_model_sequential()
model %>%
layer_conv_2d(filters = 16,kernel_size = c(5,5),activation = "relu",input_shape = c(400,400,3)) %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_dropout(rate = 0.25) %>%
layer_conv_2d(filters = 32,kernel_size = c(5,5),activation = "relu") %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_dropout(rate = 0.25) %>%
layer_conv_2d(filters = 64,kernel_size = c(5,5),activation = "relu") %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_dropout(rate = 0.25) %>%
layer_conv_2d(filters = 64,kernel_size = c(5,5),activation = "relu") %>%
layer_max_pooling_2d(pool_size = c(2,2)) %>%
layer_dropout(rate = 0.25) %>%
layer_flatten() %>%
layer_dense(128,activation = "relu") %>%
layer_dropout(rate = 0.5) %>%
layer_dense(64,activation = "relu") %>%
layer_dropout(rate = 0.5) %>%
layer_dense(5,activation = "sigmoid")
summary(model)
model <- model %>% compile(optimizer="adam",
loss="binary_crossentropy",
metrics=list('accuracy'))
history <- model %>%
fit(images,train,epochs=10,batch_size=32,validation_split=0.2)
извинитеесли это глупый или простой вопрос, но я не могу найти какое-либо полезное и простое для понимания решение моей проблемы, я буду рад, если кто-то сможет взглянуть на код и помочь мне.