首页 文章

关于LSTM对Keras的理解

提问于
浏览
0

我想知道如何在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是我的单词向量的大小(In这种情况,4)

那么,为什么我的输出形状为(3,1)?我到处搜索,但无法弄明白 .

1 回答

  • 1

    您对LSTM应该返回的内容的解释是不对的 . 输出维度不需要与输入维度匹配 . 具体来说,keras.layers.LSTM的第一个参数对应于输出空间的维度,您将其设置为1 .

    换句话说,设置:

    model.add(LSTM(k, input_shape=(3,4), return_sequences=True))

    将导致 (None, 3, k) 输出形状 .

相关问题