赞
踩
LSTM 序列到序列(seq to seq)问题建模, 根据问题和数据本身的特点,可以分为几种不同:
- 一对一(one to one)
- 多对一(many to one)
- 一对多(one to many)
- 多对多(many to many)
(1) 一对一(one to one)
这种模型是根据过去的一个时间点上的数据,预测下一个时间点的数据. 典型的问题结构是:
y(t+1) = f(x(t))
对应的LSTM网络结构是:
按照timestep展开后, 网络结构如下:
一对一模型用keras建模实现如下:
model = Sequential()
model.add(LSTM(..., input_shape=(1, features)))
model.add(Dense(1))值得注意的是, 数据本身可以是一个向量, 也就是说, 在一个时间点上, 对应的数据本身是多维的.
整个网络的输入是1个长度为features的向量, 输出是标量。
(2) 多对一(many to one)
此时,网络输入的时间步是大于1的, 但是输出的预测时间步只是1.
y(t+1) = f(x(t-n), x(t-n+1), …, x(t))
此时的网络结构为:
model = Sequential()
features = 10
vectors = 3
model.add(LSTM(8, input_shape=(vectors, features)))
model.add(Dense(1))
print(model.summary())可以得到:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_27 (LSTM) (None, 8) 608
_________________________________________________________________
dense_22 (Dense) (None, 1) 9
=================================================================
Total params: 617
Trainable params: 617
Non-trainable params: 0
______________________________Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。