Я делаю свою первую текстовую нейронную сеть с несколькими метками
Я обработал свой набор текстовых данных
сделал TFIDF и все остальное.
Я разделяю данные на обучение и тестирование данные для функций и результатов
Мои окончательные фреймы данных:
xtrain_tfidf : it has matrix of 800 records with 10,000 features for training
<799x10000 sparse matrix of type '<class 'numpy.float64'>'
with 383772 stored elements in Compressed Sparse Row format>
xval_tfidf : it has matrix of 200 records with 10,000 features for testing
<200x10000 sparse matrix of type '<class 'numpy.float64'>'
with 97643 stored elements in Compressed Sparse Row format>
ytrain : array of array that has all labels one-hot-encoded for training
(799, 668)
array([[0, 1, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 1, 0]])
yval : array of array that has all labels one-hot-encoded for training
(200, 668)
array([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]])
Я построил эту модель NN
from keras.models import Sequential
from keras import layers
input_dim = xtrain_tfidf.shape[1] # Number of features
output_dim=len(df['Categories'].explode().unique()) # Number of Classes
model = Sequential()
model.add(layers.Dense(10, input_dim=input_dim, activation='relu'))
model.add(layers.Dense(output_dim, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.summary()
history = model.fit(xtrain_tfidf, ytrain,
epochs=100,
verbose=False,
validation_data=(xval_tfidf, yval),
batch_size=10)
Когда код достигает последней истории строки, я получаю эту ошибку
~\anaconda3\lib\site-packages\six.py in raise_from(value, from_value)
InvalidArgumentError: indices[1] = [0,1277] is out of order. Many sparse ops require sorted indices.
Use `tf.sparse.reorder` to create a correctly ordered copy.
[Op:SerializeManySparse]
Мой главный вопрос: почему я получаю эту ошибку и как ее исправить? Я попытался изменить input_dim и output put, все еще получаю ту же ошибку.
Мой другой вопрос: нужно ли однократно закодировать результаты с несколькими метками, чтобы выполнять NLP с нейронной сетью? будет ли он работать, если оставить его без горячего кодирования. (Я, вероятно, протестирую это, когда получу код работающим)