通过python进行LSTM编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过python进行LSTM编程相关的知识,希望对你有一定的参考价值。
众所周知,如果我们想要训练LSTM网络,我们必须通过函数numpy.reshape()
重塑火车数据集,并且重塑结果就像[samples,time_steps,features]
。然而,新形状受原始形状的影响。我已经看到一些教授LSTM编程的博客将1作为time_steps,如果time_steps是另一个数字,则样本将相对改变。我的问题是,samples
e等于batch_size
?
X = X.reshape(X.shape[0], 1, X.shape[1])
不,样本与batch_size不同。 samples是您将拥有的样本总数。 batch_size将是每个批次的大小或每个批次在训练中使用的样本数量,例如.fit。
例如,如果samples = 128且batch_size = 16,那么您的数据将分为8个批次,每个批次在.fit调用期间有16个样本。
另外注意,time_steps是每个样本中的总时间步长或观察值。将它与LSTM作为1是没有多大意义的,因为RNN的主要优点一般是学习时间模式。如果time_step = 1,则不会有任何历史记录可供使用。这里作为一个可能有帮助的例子:
假设您的工作是通过查看每分钟提供的呼吸率和心率来确定每个小时是否有人活动,即以每小时60个样本测量的2个特征。 (这只是一个例子,如果你真的想这样做,可以使用加速度计:))假设你有128小时的标记数据。然后你的输入数据将是形状(128,60,2),你的输出将是形状(128,1)。
在这里,您有128个样本,每个样本60个时间步长或观察,以及两个功能。
接下来,根据样本将数据拆分为训练,验证和测试。例如,您的火车,验证和测试数据将分别具有形状(96,60,2),(16,60,2)和(16,60,2)。
如果使用batch_size = 16,则您的培训,验证和测试数据将分别具有6,1和1批次。
不可以。样品不等于批量大小。样本表示数据集中的行数。您的训练数据集分为多个批次,并将其传递给网络进行训练。
简单来说,
想象一下,您的数据集有30个样本,并且您将batch_size定义为3.这意味着30个样本分为10个批次(30个除以您定义的batch_size = 10)。当您训练模型时,一次只有3行数据被推送到神经网络,然后接下来的3行将被推送到神经网络。同样明智的整个数据集将推向神经网络。
Samples / Batch_size =批次数
请记住,batch_size和批次数是两个不同的东西。
以上是关于通过python进行LSTM编程的主要内容,如果未能解决你的问题,请参考以下文章
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据
Python中利用LSTM模型进行时间序列预测分析 - 预测爱尔兰的电力消耗