在用于建模IMDB (lstm.py)的LSTM上的keras示例中,在输入到LSTM层之前有一个嵌入层:
model.add(Embedding(max_features,128)) #max_features=20000
model.add(LSTM(128))嵌入层到底是做什么的?在这种情况下,这是否意味着LSTM层输入序列的长度为128?如果是这样,我是否可以将LSTM层写成:
model.add(LSTM(128,input_shape=(128,1))但是还需要注意的是,输入X_train必须经过pad_sequences处理:
print('Pad sequences (samples x time)')
X_train = sequence.pad_sequences(X_train, maxlen=maxlen) #maxlen=80
X_test = sequence.pad_sequences(X_test, maxlen=maxlen) #maxlen=80似乎输入序列的长度是80?
发布于 2017-06-26 12:05:35
将正整数(索引)转化为固定大小的密集向量。例如:[4,20] -> [0.25,0.1,0.6,-0.2]
基本上,这会将索引(表示IMDB评审包含的单词)转换为具有给定大小的向量(在您的示例中是128)。
如果您不知道什么是一般的嵌入,这是维基百科的定义
词嵌入是自然语言处理(NLP)中一组语言建模和特征学习技术的总称,它将词汇中的单词或短语映射到相对于词汇量的低维空间(“连续空间”)中的实数向量。
回到你问过的另一个问题:
在这种情况下,这是否意味着LSTM层输入序列的长度为128?
不完全是。对于递归网,您将有一个时间维和一个特征维。128是您的特征维度,正如每个嵌入向量应该有多少维。示例中的时间维度是存储在maxlen中的内容,用于生成训练序列。
无论你向LSTM层是LSTM的实际输出单元数。提供128个。
https://stackoverflow.com/questions/44759194
复制相似问题