Одно горячее кодирование, дающее одинаковое число для разных слов в керасе

Почему я получаю одинаковые результаты для разных слов?

import keras
keras.__version__
'1.0.0'
import theano 
theano.__version__
'0.8.1'

from keras.preprocessing.text import one_hot
one_hot('START', 43)
[26]
one_hot('children', 43)
[26]

2 ответа

Из исходного кода Keras вы можете видеть, что слова хэшируются по модулю выходного измерения (43, в вашем случае):

def one_hot(text, n,
        filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n',
        lower=True,
        split=' '):
    seq = text_to_word_sequence(text,
                            filters=filters,
                            lower=lower,
                            split=split)
    return [(abs(hash(w)) % (n - 1) + 1) for w in seq]

Так что очень вероятно, что произойдет столкновение.

Unicity не гарантируется в одном горячем кодировании

см. одну горячую документацию по keras

Другие вопросы по тегам