Keras在LSTM之前进行了一次热嵌入

时间:2018-01-10 02:00:43

标签: python tensorflow keras

假设我有一个训练数据集作为几个序列,填充长度= 40,字典长度为80,例如example = [0, 0, 0, 3, 4, 9, 22, ...],我想将其提供给LSTM层。我想要做的是将一个热编码器应用于序列,例如example_after_one_hot.shape = (40, 80)。是否有能够做到这一点的keras层?我尝试了Embedding,但似乎这不是一个热门的编码。

编辑:另一种方法是使用嵌入层。鉴于字典只​​包含80个不同的键,我应该如何设置嵌入层的输出?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找预处理任务,而不是严格属于您网络的任务。

Keras具有一个热门文本预处理功能,可以帮助您。看看Keras text preprocessing。如果这不符合您的需求,那么用numpy自行预处理就相当容易了。你可以做点什么......

X = numpy.zeros(shape=(len(sentences), 40, 80), dtype='float32')
for i, sent in enumerate(sentences):
    for j, word in enumerate(sent):
        X[i, j, word] = 1.0

这将为您提供一个二维“句子”数组的热门编码,其中数组中的每个单词都是一个小于80的整数。当然数据不一定是句子,它可以是任何类型的数据。

请注意,嵌入图层用于学习数据的分布式表示,而不是以单热格式放置数据。