我想知道在 Keras 下 LSTM 是如何工作的。
让我们举个例子。我的最大句子长度为 3 个单词。示例:“你好吗”我将每个词向量化为 len 4 的向量。所以我将有一个形状 (3,4) 现在,我想使用 lstm 来做翻译的东西。(只是一个例子)
model = Sequential()
model.add(LSTM(1, input_shape=(3,4), return_sequences=True))
model.summary()
根据 Keras,我将有 (3,1) 的输出形状。
Layer (type) Output Shape Param #
=================================================================
lstm_16 (LSTM) (None, 3, 1) 24
=================================================================
Total params: 24
Trainable params: 24
Non-trainable params: 0
_________________________________________________________________
这是我不明白的。
LSTM 的每个单元(使用 return_sequences=True 来获得每个状态的所有输出)应该给我一个形状向量(时间步长,x),在这种情况下,时间步长是 3,x 是我的单词向量的大小(在在这种情况下,4)
那么,为什么我的输出形状为 (3,1) ?我到处搜索,但无法弄清楚。
你对 LSTM 应该返回什么的解释是不正确的。输出维度不需要与输入维度匹配。具体来说,keras.layers.LSTM的第一个参数对应于输出空间的维度,您将其设置为 1。
换句话说,设置:
model.add(LSTM(k, input_shape=(3,4), return_sequences=True))
将导致(None, 3, k)
输出形状。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句