Я столкнулся с проблемой с "Ошибка при проверке цели: ожидалось, что плотность_2 имеет 2 измерения, но получен массив с формой (867, 44, 44)".
По моему мнению, мне нужно перенести размер во время предварительной обработки детали или изменить функцию потерь.
Я уже искал похожие вопросы по stackoverflow, но не смог их решить. Может кто-нибудь помочь мне, пожалуйста?
На вход выводятся несколько красочных картинок с высотой 46 и шириной 120, поэтому я установил вход с помощью (46,120,3).
Форма X_train: (1084, 46, 120, 3)
Форма Y_train (которая является меткой) после перевода в одно горячее кодирование: (1084, 44, 44)
А детали предварительной обработки и модель приведены ниже:
model = Sequential()
X_train = X_train/255 Y_train = to_categorical(Y_train,num_classes = 44)
random_seed = 2 X_train, X_val, Y_train, Y_val = train_test_split(X_train,
Y_train, test_size = 0.2, random_state=random_seed)
model.add(Conv2D(filters=16,kernel_size=(5,5),padding='same',input_shape=(46,120,3),activation='relu',data_format
= 'channels_last'))
model.add(Conv2D(filters=16,kernel_size=(5,5),padding='same',activation='relu'))
model.add(MaxPool2D(pool_size=(2,2),strides = (1,1)))
model.add(Dropout(0.25))
model.add(Conv2D(filters=32,kernel_size=(5,5),padding='same',activation='relu'))
model.add(Conv2D(filters=32,kernel_size=(5,5),padding='same',activation='relu'))
model.add(MaxPool2D(pool_size=(2,2),strides = (1,1))) model.add(Dropout(0.25))
model.add(Conv2D(filters=32,kernel_size=(5,5),padding='same',activation='relu'))
model.add(Conv2D(filters=32,kernel_size=(5,5),padding='same',activation='relu'))
model.add(MaxPool2D(pool_size=(2,2),strides = (1,1)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256,activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(44,activations='softmax'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',metrics=['accuracy'])
model.summary()
# Set the learning rate annealer learning_rate_reduction =
ReduceLROnPlateau(monitor='val_acc',
patience = 3,
verbose = 1,
factor = 0.5,
min_lr = 0.00001) epochs = 100 batch_size = 86
model.fit(X_train,Y_train)
ValueError: Ошибка при проверке цели: ожидается, что плотность_2 имеет 2 измерения, но получен массив с формой (867, 44, 44)
Кстати, плотность_2 - последний слой моей модели.