@Mikhail00900

Keras Shapes (None, 3) and (None, 4, 3) are incompatible изза чего?

import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.utils import to_categorical
import numpy as np
x=[[[13.0, 10.0], [12.0, 28.0], [10.0, 14.0], [6.0, 53.0]], [[12.0, 53.0], [13.0, 53.0], [10.0, 53.0], [3.0, 31.44]], [[15.0, 28.0], [16.0, 28.0], [13.0, 28.0], [6.0, 28.0]]]
y=[0, 1, 2]
x=np.array(x).reshape(-1,4,2)
y=to_categorical(np.array(y),num_classes=3)
model = Sequential()
model.add(Dense(16, activation='relu',input_shape=(4,2)))
model.add(Dropout(0.5))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

model.fit(x, y, epochs=20)

выдает ошибку:
ValueError: Shapes (None, 3) and (None, 4, 3) are incompatible
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
gnifajio
@gnifajio
Совершенствуюсь каждый день
Ошибка возникает, потому что форма выходных данных (y) не совпадает с формой выходного слоя модели. Выходной слой содержит 3 нейрона, что означает, что форма выходных данных должна быть (None, 3), где None означает, что это количество образцов данных может быть произвольным.

В данном случае, вы используете функцию to_categorical для преобразования y в категориальный формат, то есть каждое значение y преобразуется в вектор, в котором только один элемент равен 1, а все остальные равны 0. Это приводит к форме выходных данных (None, 3).

Чтобы решить эту проблему, вам нужно изменить форму y, чтобы она соответствовала форме выходного слоя модели. В данном случае, вам нужно изменить код следующим образом:
y = np.array(y)
В этом случае форма y будет (3,), что соответствует форме выходного слоя модели, и ошибка должна исчезнуть.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы