我正在尝试制作一个聊天机器人,它使用序列序列模型来响应用户的输入。问题是,给模型的输入序列几乎永远不会相同。输入序列是一个单词列表。我已经创建了一个词汇表,将这个序列中的每个单词映射到它自己的唯一id,但是,输入仍然是可变的,而且不是固定的,所以我不能仅仅使用序列来进行序列模型。我知道,可以使用编码器将单词序列映射到固定的向量表示,然后将该向量映射到序列。
我的问题是如何将单词序列编码成一个固定的向量?有什么技术可以用于这个目的吗?
发布于 2016-11-12 12:00:50
将一个词序列映射到一个向量表示可以用递归神经网络来完成。您可以看看下面的介绍:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
在tensorflow工具包中有一个教程,它用示例代码解决这个序列到序列映射体系结构:https://www.tensorflow.org/versions/r0.11/tutorials/index.html
不过,在使用RNN之前,我建议您先了解一下神经网络的基本知识:http://deeplearning.net/software/theano/tutorial/#basics
Bengio的深度学习书:http://www.deeplearningbook.org/涵盖了很多关于RNN的材料,但是它涉及到相当多的数学。
发布于 2018-03-26 10:15:04
在将数据传递给序列建模器以使其固定长度之前,您应该将数据填充到固定长度。
from keras.preprocessing.sequence import pad_sequence
X = pad_sequences(X, maxlen=100, dtype='float32', padding='pre', truncating='pre', value=0.0)因此,如果你有一个数据点m(样本数),seq_len(可变序列长度),f(特征数).这将使用静态seq_len为100来填充数据。它将截断较大的序列和垫较小的与零在开始。还有其他更复杂的技术来标准化序列长度,但这是一个简单的技术。
https://stackoverflow.com/questions/40539758
复制相似问题