1.one-to-one model
应用场景如:给定一个词预测下一个词
可以使用类似代码:
model = Sequential()
model.add(LSTM(..., input_shape=(1, ...)))
model.add(Dense(1))
2.one-to-many model
应用场景如:从单张图片预测词语序列,从单个时间预测一系列的观察值
图片标记使用CNN和LSTM进行,代码示例:
model = Sequential()
model.add(Conv2D(...))
...
model.add(LSTM(...))
model.add(TimeDistributed(Dense(1)))
3.many-to-one model
应用场景如情感分析等输入句子预测情感分类标签
代码示例:
model = Sequential()
model.add(LSTM(..., input_shape=(steps, ...)))
model.add(Dense(1))
4.many-to-many model 应用场景如:seq2seq
当输入和输出的time steps相同时,LSTM需要返回每一个time step的值而不只是最终值:
model = Sequential()
model.add(LSTM(..., input_shape=(steps, ...), return_sequences=True))
model.add(TimeDistributed(Dense(1)))
当输入和输出time steps不等时,类似encoder-decoder
model = Sequential()
model.add(LSTM(..., input_shape=(in_steps, ...)))
model.add(RepeatVector(out_steps))
model.add(LSTM(..., return_sequences=True))
model.add(TimeDistributed(Dense(1))