machine-learning - Keras 中的多对一和多对多 LSTM 示例

标签 machine-learning neural-network deep-learning keras recurrent-neural-network

我尝试了解 LSTM 以及如何使用 Keras 构建它们。我发现,运行 RNN 主要有 4 种模式(图中正确的 4 种)

enter image description here 图片来源:Andrej Karpathy

现在我想知道它们每个的简约代码片段在 Keras 中会是什么样子。 所以类似

model = Sequential()
model.add(LSTM(128, input_shape=(timesteps, data_dim)))
model.add(Dense(1))

对于 4 个任务中的每一个,也许都有一些解释。

最佳答案

所以:

  1. 一对一:您可以使用Dense层,因为您不处理序列:

    model.add(Dense(output_size, input_shape=input_shape))
    
  2. 一对多:此选项不受良好支持,因为在 Keras 中链接模型不太容易,因此以下版本是最简单的版本:

    model.add(RepeatVector(number_of_times, input_shape=input_shape))
    model.add(LSTM(output_size, return_sequences=True))
    
  3. 多对一:实际上,您的代码片段(几乎)是这种方法的一个示例:

    model = Sequential()
    model.add(LSTM(1, input_shape=(timesteps, data_dim)))
    
  4. 多对多:当输入和输出的长度与循环步骤的数量匹配时,这是最简单的代码片段:

    model = Sequential()
    model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequences=True))
    
  5. 当步数与输入/输出长度不同时进行多对多:这在 Keras 中非常困难。没有简单的代码片段可以进行编码。

编辑:广告 5

在我最近的一个应用程序中,我们实现了一些可能类似于第四张图像中的多对多的东西。如果您想要一个具有以下架构的网络(当输入比输出长时):

                                        O O O
                                        | | |
                                  O O O O O O
                                  | | | | | | 
                                  O O O O O O

您可以通过以下方式实现此目的:

model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequences=True))
model.add(Lambda(lambda x: x[:, -N:, :])) #Select last N from output

其中 N 是您想要涵盖的最后步骤的数量(在图像 N = 3 上)。

从这一点开始:

                                        O O O
                                        | | |
                                  O O O O O O
                                  | | | 
                                  O O O 

与长度为N的人工填充序列一样简单,例如使用与0向量,以便将其调整到合适的大小。

关于machine-learning - Keras 中的多对一和多对多 LSTM 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43034960/

相关文章:

python - 图像边缘检测 Keras 模型损失没有改善

python - 从 Tensorflow/Keras 中的最佳神经网络中提取权重 - 多个时期

machine-learning - TensorFlow 训练不起作用 : model is not learning data

Matlab深度学习回归

machine-learning - 如何使用resnet50模型进行微调?

linux - 在 Ubuntu 上运行 Tensorflow 出现语法错误

python - 如何绘制仅具有一个特征的 svm 超平面

machine-learning - 如何解决Keras LSTM网络中的loss = Nan问题?

Python NLTK : How to retrieve percentage confidence in classifier prediction

artificial-intelligence - 这个分类结果可以接受吗?