Я тренирую многозначный RNN уровня персонажа, и размер входного словаря равен 87, а размер выходного класса - 9 классов. Первоначально каждому символу во входных данных был присвоен идентификатор из {0,...,86}
, а каждому выходному классу был присвоен идентификатор из {0,...8}
. Также моя функция потерь была tf.keras.losses.sparse_categorical_crossentropy
.
Проблема в том, что входы были различной длины, поэтому мне нужно было использовать заполнение нулями. Модель обучалась без ошибок, однако проблема заключалась в том, что у модели не было способа отличить ноль, представляющий собой значение пэда, от ноля, представляющего собой символ или значение выходного класса.
Я думаю, что я решил эту проблему путем увеличенияидентификаторы символов и выходных классов таковы, что теперь они равны {1,...,87}
и {1,...,9}
соответственно. Мне также нужно было увеличить размеры входных и выходных данных модели, которую я обучал. Результаты выглядят хорошо, и не похоже, что обученная модель когда-либо предсказывает ноль (то есть значение пэда), так что это хорошо. Но мой вопрос в том, является ли это правильным способом иметь дело с нулевыми идентификаторами в вашем наборе данных, когда вы используете заполнение нулями?