Путаница по поводу заполнения и маскирования входных значений TF, когда в данных есть нули - PullRequest
0 голосов
/ 28 октября 2019

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

Проблема в том, что входы были различной длины, поэтому мне нужно было использовать заполнение нулями. Модель обучалась без ошибок, однако проблема заключалась в том, что у модели не было способа отличить ноль, представляющий собой значение пэда, от ноля, представляющего собой символ или значение выходного класса.

Я думаю, что я решил эту проблему путем увеличенияидентификаторы символов и выходных классов таковы, что теперь они равны {1,...,87} и {1,...,9} соответственно. Мне также нужно было увеличить размеры входных и выходных данных модели, которую я обучал. Результаты выглядят хорошо, и не похоже, что обученная модель когда-либо предсказывает ноль (то есть значение пэда), так что это хорошо. Но мой вопрос в том, является ли это правильным способом иметь дело с нулевыми идентификаторами в вашем наборе данных, когда вы используете заполнение нулями?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...