Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 ar

523 views
Skip to first unread message

vinayak...@gmail.com

unread,
Feb 24, 2018, 1:03:33 PM2/24/18
to Keras-users
I want to pass a pair (good and bad) to the CNN and while testing also I will pass a pair of images. The code is given below

import cv2

X_bad
= []
X_bad_id
= []
for i in range(1,53):
    a
= 'data/train/data/bad/bad'+`i`+'.jpg'
    img
= cv2.imread(a)
    X_bad
.append(img)
    X_bad_id
.append("0")

import numpy as np
X_bad
= np.array(X_bad)
X_bad_id
= np.array(X_bad_id)

X_good
= []
X_good_id
= []
for i in range(1,53):
    a
= 'data/train/data/good/good'+`i`+'.jpg'
    img
= cv2.imread(a)
    X_good
.append(img)
    X_good_id
.append("1")

import numpy as np
X_good
= np.array(X_good)
X_good_id
= np.array(X_good_id)`

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers.convolutional import Conv2D
from keras.layers.pooling import MaxPooling2D
from keras.layers.merge import concatenate
from keras.optimizers import SGD
from keras.callbacks import ModelCheckpoint
from keras.layers import Input
from keras.models import Model


X_good = X_good.astype('float32')
X_bad  = X_bad.astype('float32')

X_good /= 255
X_bad /= 255

visible1 = Input(shape=(250,250,3))
conv11 = Conv2D(32, kernel_size=4, activation='relu')(visible1)
pool11 = MaxPooling2D(pool_size=(2, 2))(conv11)
conv12 = Conv2D(16, kernel_size=4, activation='relu')(pool11)
pool12 = MaxPooling2D(pool_size=(2, 2))(conv12)
flat1 = Flatten()(pool12)

visible2 = Input(shape=(250,250,3))
conv21 = Conv2D(32, kernel_size=4, activation='relu')(visible2)
pool21 = MaxPooling2D(pool_size=(2, 2))(conv21)
conv22 = Conv2D(16, kernel_size=4, activation='relu')(pool21)
pool22 = MaxPooling2D(pool_size=(2, 2))(conv22)
flat2 = Flatten()(pool22)

merge = concatenate([flat1, flat2])

# interpretation model
hidden1 = Dense(10, activation='relu')(merge)
hidden2 = Dense(10, activation='relu')(hidden1)
output = Dense(1, activation='sigmoid')(hidden2)
model = Model(inputs=[visible1, visible2], outputs=output)

model.compile(optimizer='adam', loss='binary_crossentropy')
model.fit([X_good, X_bad], [X_good_id, X_bad_id],epochs=50, batch_size=32)

The above program is giving the following error

ValueError: Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 2 arrays: [array(['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
'1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
'1', '1', '1', '1', '1', '1', '1', '1', '1', '1'...

Reply all
Reply to author
Forward
0 new messages