我正在尝试使用由两个类别组成的自己的数据集。我不明白怎么能解决这个问题。我怎样才能解决这个问题?似乎模型将图像的形状作为输入而不是实际图像。
print X_train.shape
print y_train.shape
print X_test.shape
print y_test.shape
(55, 3, 150, 150)
(55, 1)
(14, 3, 150, 150)
(14, 1)
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import backend as K
K.set_image_dim_ordering('th')
model = Sequential()
#model.add(Convolution2D(32, kernel_size=(3, 3), input_shape=(3, IMG_SIZE, IMG_SIZE)))
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(3,150,150)))
#model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('sigmoid'))
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
ValueError: Error when checking target: expected activation_4 to have 2 dimensions, but got array with shape (14, 3, 150, 150)
答案 0 :(得分:3)
您传递给fit
方法的内容Y
有4个维度:(14,3,150,150)
。
您可能会传递X而不是Y.根据最后一层的输出,您的Y必须具有形状(14,2)
。
但如果您的Y具有(14,1)
形状,则最后应该使用Dense(1)
代替Dense(2)
。