1

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

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]
4

2 回答 2

2

在一个热编码中不保证唯一性

查看一个热门的 keras 文档

于 2016-04-13T09:45:05.250 回答
1

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]

所以很有可能会发生碰撞。

于 2017-04-17T06:18:07.560 回答