【问题标题】:About LSTM understanding on Keras关于LSTM对Keras的理解
【发布时间】:2018-09-16 10:45:20
【问题描述】:

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

那么,为什么我的输出形状是 (3,1) ? 我到处找了,还是搞不清楚。

【问题讨论】:

    标签: neural-network deep-learning keras lstm


    【解决方案1】:

    你对 LSTM 应该返回什么的解释是不正确的。输出维度不需要匹配输入维度。具体来说,keras.layers.LSTM 的第一个参数对应的是输出空间的维度,你设置为 1。

    换句话说,设置:

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

    将产生(None, 3, k) 输出形状。

    【讨论】:

    • 感谢您的回答。所以,如果我理解的话,你的意思是第一个参数是指进入 LSTM 不同门的神经元数量?因此,无论输入是什么,输出和上下文向量都将具有参数 len。是这样吗?
    • 对,第一个参数是指LSTM门的输出维度,输出维度不依赖于输入维度。
    • @Pusheen_the_dev 如果答案有帮助,请接受和/或投票 - 答案会占用受访者宝贵的时间
    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2018-11-06
    • 2019-05-26
    • 2017-06-03
    • 2018-04-07
    • 2017-07-15
    相关资源
    最近更新 更多