keras中lstm,shape等疑问

仅供自己学习,侵权立删

问题1:训练数据的样子(shape)
基于keras的LSTM模型编程过程中,需要将输入数据规范为3维格式,每个维度分别是
samples steps features
samples就是样本数量,一般来讲,这个数量和训练结果的数量是一致的,不管是多参量还是单参量,或者是多个时间步长,对应的结果通常是确定的。
steps是指时间步长,通常来讲,如果是有监督学习,比如时间序列转化成的训练集,这个参数代表使用了多少个时间步长的训练集来对应最终的结果。
features是指训练集中参量的数量,即有几个参数决定了结果。
LSTM语句的调用,会用到steps和features这两个值。
输入矩阵的格式要求是(samples,steps,features) 其实也就是samples steps dim三个单词一个意思(维度即特征)
在这里插入图片描述
图源此处


问题2:return_sequences
输入shape
问题1刚刚说过:形如(samples,timesteps,input_dim)的3D张量
输出shape
如果return_sequences=True:返回形如(samples,timesteps,output_dim)的3D张量否则,返回形如(samples,output_dim)的2D张量
如下图 :图源https://blog.csdn.net/weixin_39729837/article/details/111388451
在这里插入图片描述

为什么要有return_sequences?:
我们可以把很多LSTM层串在一起,所以,为了对接,前面层数此参数设置都为true,但是最后一个LSTM层return_sequences通常为false
例子
在这里插入图片描述
图源此处

另一篇文章的解释:

在这里插入图片描述
在这里插入图片描述
图源:https://zhuanlan.zhihu.com/p/366972955

两篇文章的差别在于一篇说第一个参数是sample 一篇说是batchsize,此处的sample应该(应该应该)指的是一个批次内的sample,也就等于batchsize的值了


问题3:dim与input_shape(n,) 的形式
在这里插入图片描述图源此处


问题4:
在model中添加lstm层时,有两个形式:
形式1:
model.add(LSTM(neurons, batch_input_shape=(batch_size, X.shape[1], X.shape[2]), stateful=True))
形式2:
model.add(LSTM(neurons,input_shape=(1,look_back))) 其中look_back给的解释是用前面look_back
个数据来预测下一个数据(其实说白了就是上下文中的time_step,但是个人不是特别理解,难道time_step不应该放到逗号前面吗????应该是(look_back,1)吧?)

很明显 第二种定义方式没有给出batch_size 解释:
在此定义中,Keras忽略了第一维,即批量大小。您的模型应该能够处理任何批量大小,因此您只能定义其他尺寸:时间长度与维度
在没有定义batch_size的情况下, 可以通过model.fit中的batch_size参数进行定义, 但是这种方法无法再使用model.train_on_batch()函数. 如果这里定义了batch_size,那么在test的时候, 也要保证有该batch_size的数据, 否则会出现错误, 这样对只预测一个样本的问题无法兼容. 比较好的方法是将Batch_size设置为None, 这样不需要实现设置固定的batch_size,且可以调用train_on_batch.
model.add(LSTM(32, batch_input_shape=(None, 10, 64)))
在没有定义Input_Sizes的情况下, 尝试的训练, 会将其默认为1处理.
另外, input_length指的也是输入句子的长度,即Time_step. 如下定义方式,表达的内容同上:
model.add(LSTM(32, input_length=10, input_dim=64))

问题5:
batch_size 和stateful 与问题3有很大的关联其实
深入理解Keras LSTM的stateful
问题6:
dense层:
Keras中dense层原理及用法解释


tensorflowgpu下载:
https://blog.csdn.net/m0_49090516/article/details/113576003教程


良好的kreas lstm实战教程
https://blog.csdn.net/u012735708/article/details/82769711
实战教程

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值