Я строю модель для сегментации дороги, используя набор данных KITTI.Когда я пытался тренировать свою модель, я получил следующую ошибку
Error when checking target: expected activation_26 to have 2 dimensions,
but got array with shape (289, 160, 576, 2)
Мой x имеет форму (289, 160, 576, 3) и y (289, 160, 576, 2).Моя модель выглядит следующим образом
Моя модель.
model = Sequential()
model.add(Conv2D(96, (5, 5), padding="same",input_shape=(160, 576, 3)))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2), dim_ordering="tf"))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2), dim_ordering="tf"))
model.add(ZeroPadding2D((1,1)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2) , dim_ordering="tf"))
model.add(Flatten())
model.add(Dense(4096, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(4096, activation='relu'))
model.add(Dropout(0.5))
# softmax classifier
model.add(Dense(2))
model.add(Activation("softmax"))
#Here is my data augmentation
aug = ImageDataGenerator(rotation_range=40, width_shift_range=0.2,
height_shift_range=0.2, shear_range=0.1, zoom_range=0.2,
fill_mode="nearest")
adam = Adam(lr=1e-5)
model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])
H = model.fit_generator(aug.flow(x, y, batch_size=BATCH_SIZE),
validation_data=(x, y), steps_per_epoch=len(x) // BATCH_SIZE,
epochs=EPOCHS, verbose=1)
Я думаю, что это проблема с последним слоем.Мой у многомерный, но мой последний слой двухмерный.Когда я изменяю свой слой на model.add(Dense((289, 160, 576, 2)))
, я получаю эту ошибку TypeError: unsupported operand type(s) for +: 'int' and 'tuple'