LSTM原理、参数介绍、Keras实现

@创建于:20210316
@修改于:20210316,20220317

1、LSTM原理

LSTM原理及Keras中实现:20191207
LSTM原理及Keras中实现:20200714
难以置信!LSTM和GRU的解析从未如此清晰(动图+视频)2018-09-29

人人都能看懂的LSTM:20171216
人人都能看懂的GRU:20180102

Keras关于LSTM的units参数,还是不理解?
Units in LSTM【有助于理解,如下图】在这里插入图片描述

2、参数介绍

LSTM函数的各个参数的含义:2019-06-08

LSTM08 超详细LSTM调参指南

keras:LSTM函数详解

3、Keras实现
model = Sequential()
model.add(LSTM(units=100, input_shape=(30, 40), return_sequences=True))
model.add(Dropout(0.2))

model.add(LSTM(units=50, return_sequences=False))
model.add(Dropout(0.2))

model.add(Dense(units=1))
model.add(Activation("linear"))
model.compile(loss="mse", optimizer="adam", metrics=['mae', 'mape'])
  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个模型是一个序列到序列的模型,它的输入是一个时间序列数据,输出也是一个时间序列数据。模型的输入数据是一个三维张量,形状为(batch_size, time_steps, input_dim),其中batch_size表示输入数据的批次大小,time_steps表示时间步数,input_dim表示每个时间步的输入特征维度。模型的输出数据也是一个三维张量,形状为(batch_size, time_steps, output_dim),其中output_dim表示每个时间步的输出特征维度。 模型的第一层是CNN层,它用于提取局部特征。接着是全局池化层GlobalMaxPooling1D(),它用于将每个时间步的输出压缩成一个定长的向量表示。然后是Bi-CLSTM层,它用于提取时序特征。Bi-CLSTM层由两个LSTM层组成,分别对输入序列进行正向和反向的处理,得到一个包含正向和反向信息的时间序列输出。接着是自注意力机制Attention()层,它用于进一步提高表示的准确性。自注意力机制可以帮助模型关注输入序列中的重要部分,并且可以捕捉输入序列中的长程依赖关系。最后是全局池化层GlobalMaxPooling1D(),它用于将Bi-CLSTM层的输出压缩成一个定长的向量表示。 将CNN层和Bi-CLSTM层的输出进行合并,可以将不同类型的特征结合起来,得到一个更加丰富和全面的特征表示。合并操作使用了Concatenate()层。最后,输出层使用Dense()层来对合并后的特征进行分类或回归。 整个模型的训练过程就是将输入数据送入模型,计算输出结果与真实结果之间的误差,通过反向传播算法来更新模型参数,以使误差最小化。模型的优化器可以选择Adam、SGD等常见的优化器,损失函数可以根据具体的任务选择,如MSE、MAE、交叉熵等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值