如何解决“ ValueError:输入数组应具有与目标数组相同的样本数。找到2个输入样本和8个目标样本。”

时间:2019-06-04 09:54:50

标签: r tensorflow keras

尝试使用keras和Tensorflow在R中构建图像分类器。 我尝试拟合模型后发生错误。无法理解为什么会发生或如何解决。

library(EBImage)
library(keras)
library(tensorflow)
library(devtools)

setwd('C:/Users/Adhish/Desktop/Images')
pics <- c('B1.jpg','B2.jpg','B3.jpg','B4.jpg','B5.jpg','B6.jpg',
      'D1.jpg','D2.jpg','D3.jpg','D4.jpg','D5.jpg','D6.jpg')
mypic <- list()
for (i in 1:12) 
{
mypic[[i]] <- readImage(pics[i])
}

# Resizing to make the dimensions of all the images similar
for (i in 1:12)
{ 
mypic[[i]] <- resize(mypic[[i]], 100, 100)
}

#reshape to create matrix for training purpose
for (i in 1:12) 
{ 
mypic[[i]] <- array_reshape(mypic[[i]], c(100,100,3))
}

# row bind
trainx <- NULL
for (i in 1:4 && 7:10) 
 { 
trainx <- rbind(trainx, mypic[[i]])
}
testx <- rbind(mypic[[5]],mypic[[6]],mypic[[11]],mypic[[12]])

trainy<- c(0,0,0,0,1,1,1,1)
testy <- c(0,0,1,1)

#onehotencoding
trainLabels <- to_categorical(trainy)
testLabels <- to_categorical(testy)

#model
model <- keras_model_sequential()
model %>%
layer_dense(units = 256, activation = 'relu', input_shape = c(30000)) %>%
layer_dense(units = 128, activation = 'relu') %>%
layer_dense(units = 2, activation = 'softmax')
summary(model)

#compile
model %>%
  compile(loss = 'binary_crossentropy', optimizer = optimizer_rmsprop(), 
   metrics = c('accuracy'))

#fit model
model %>%
 fit(trainx, trainLabels, epochs = 30, batch_size = 32, 
      validation_split =  0.4)

py_call_impl(可调用,dots $ args,dots $ keywords)错误:   ValueError:输入数组应具有与目标数组相同数量的样本。找到2个输入样本和8个目标样本。

0 个答案:

没有答案
相关问题