假设我有一个训练数据集作为几个序列,填充长度= 40,字典长度为80,例如example = [0, 0, 0, 3, 4, 9, 22, ...]
,我想将其提供给LSTM层。我想要做的是将一个热编码器应用于序列,例如example_after_one_hot.shape = (40, 80)
。是否有能够做到这一点的keras层?我尝试了Embedding
,但似乎这不是一个热门的编码。
编辑:另一种方法是使用嵌入层。鉴于字典只包含80个不同的键,我应该如何设置嵌入层的输出?
答案 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的整数。当然数据不一定是句子,它可以是任何类型的数据。
请注意,嵌入图层用于学习数据的分布式表示,而不是以单热格式放置数据。