ValueError: Arguments `target` and `output` must have the same rank (ndim). Received: target.shape=(None,), output.shape=(None, 500, 1)
Делаю нейросеть на Keras, которая по датасету IMDB будет определять хорошие/плохие отзывы.
import tensorflow as tf
from keras import models
from keras import layers
from tensorflow.keras import preprocessing
from tensorflow.keras.datasets import imdb
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=10000)
max_len = 500 # Максимальная длина отзыва
vocab_size = 10000
x_train = preprocessing.sequence.pad_sequences(x_train, maxlen=max_len)
x_test = preprocessing.sequence.pad_sequences(x_test, maxlen=max_len)
model = models.Sequential()
model.add(layers.Embedding(input_dim=vocab_size, output_dim=128, input_length=max_len))
model.add(layers.Dense(64, activation="relu"))
model.add(layers.Dense(1, activation="sigmoid"))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=20)
При запуске выдает ошибку:
Traceback (most recent call last):
File "/home/user/PycharmProjects/ai_projects/bad_good/fit.py", line 18, in <module>
model.fit(x_train,y_train,epochs=20)
File "/home/user/PycharmProjects/ai_projects/.venv/lib/python3.12/site-packages/keras/src/utils/traceback_utils.py", line 122, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/home/user/PycharmProjects/ai_projects/.venv/lib/python3.12/site-packages/keras/src/backend/tensorflow/nn.py", line 554, in categorical_crossentropy
raise ValueError(
ValueError: Arguments `target` and `output` must have the same rank (ndim). Received: target.shape=(None,), output.shape=(None, 500, 1)
Как я понял, тут проблема в том, что ранги (размерность входных/выходных массивов) разные. При запуске tf.rank(<data>), выдает, что у меня один массив двумерный, и один массив одномерный:
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(1, shape=(), dtype=int32)
Помогите мне преобразовать эти массивы в один тип.