0
一对一:不处理序列时你可以使用一层Dense层,
model.add(Dense(output_size, input_shape=input_shape))
一对多:因为在Keras中链接模型不是很容易所以不支持此选项,,以下版本是最简单的版本:
model.add(RepeatVector(number_of_times, input_shape=input_shape))
model.add(LSTM(output_size, return_sequences=True))
多对一:实际上,你的代码段(几乎)是此方法的一个示例:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim)))
多对多:输入和输出的长度与循环步数匹配时,这是最简单的代码段:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequen
当步数与输入/输出长度不同时的多对多:这在Keras中非常难。没有简单的代码片段可以对此进行编码。
在我最近的一个应用程序中,我们实现了与第四张图片中的多对多内容相似的内容。如果你要使用以下架构的网络(输入长于输出时): 你可以通过以下方式实现此目的:
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) 从这一点开始:
这与使用0向量的长度为N的人工填充序列一样简单,以便将其调整为适当的大小。
收藏