Ошибка значения: «логиты» и «метки» должны иметь одинаковую форму, полученные ((Нет, 10) против (Нет, 11, 2, 2))

#pandas #machine-learning #deep-learning #neural-network #conv-neural-network

#панды #машинное обучение #глубокое обучение #нейронная сеть #conv-нейронная сеть

Вопрос:

Ввод:

 x_train shape: (6000, 16, 16, 1) x_test shape: (5000, 16, 16, 1) y_test shape: (5000, 11, 2) y_test shape: (5000, 16, 16, 1) 6000 train samples 5000 test samples  

Нейронная сеть :-

 batch_size = 128 num_classes = 10 epochs = 10 model = Sequential() model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',input_shape=input_shape)) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(256, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(num_classes, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adadelta(),metrics=['accuracy'])  

Ошибка:-

 Epoch 1/10 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) lt;ipython-input-47-628ddb8c3023gt; in lt;modulegt;()  ----gt; 1 hist = model.fit(x_train,   y_train,batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(x_test,   y_test))  2 print("The model has successfully trained")  3 model.save('mnist.h5')  4 print("Saving the model as mnist.h5")   1 frames  /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py   in autograph_handler(*args, **kwargs)  1127 except Exception as e: # pylint:disable=broad-except  1128 if hasattr(e, "ag_error_metadata"):  

-gt; 1129 поднять e.ag_error_metadata.to_exception(e) 1130 еще: 1131 повышение

 ValueError: in user code:  

Я изо всех сил старался объяснить свою проблему, если возникнет какая-либо путаница, то мои извинения, дайте мне знать, и я добавлю это.

Ответ №1:

Как говорится в сообщении об ошибке, в то время как ваша модель выдает прогноз более 10 классов на выборку, вы передали «истинные метки» каким-то несовместимым способом, почему ваши метки трехмерны? У вас есть тензор 11x2x2 на образец, а не номер класса с одним горячим кодом.

Комментарии:

1. Не могли бы вы, пожалуйста, сказать мне, правильно ли я изменяю его? x_train = x_train.reshape(x_train.shape[0], 16, 16, 1) x_test = x_test.reshape(x_test.shape[0], 16, 16, 1) input_shape = (16, 16, 1) # convert class vectors to binary class matrices y_train = keras.utils.np_utils.to_categorical(y_train) y_test = keras.utils.np_utils.to_categorical(y_test)

2. Я не знаю, каковы ваши данные, но если предположить, что ваши данные представляют собой изображения в оттенках серого 16×16, это выглядит нормально