一个热编码为keras中的不同单词提供相同的编号

时间:2016-04-13 07:11:42

标签: python-2.7 theano keras one-hot-encoding

为什么我对不同的单词得到相同的结果?

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 个答案:

答案 0 :(得分:2)

在一个热门编码中无法保证

请参阅one hot keras documentation

答案 1 :(得分:1)

Keras source code开始,您可以看到单词是以输出维度为模的散列(在您的情况下为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]

因此很可能会发生碰撞。