在给定输入的情况下,我正在使用Bike Sharing 数据集来预测一天内的租赁数量。我将使用 2011 年的数据进行训练,使用 2012 年的数据进行验证。我成功地建立了一个线性回归模型,但现在我试图弄清楚如何使用循环神经网络来预测时间序列。
数据集有 10 个属性(如月、工作日与否、温度、湿度、风速),虽然属性是天(星期日:0,星期一:1 等),但都是数字。
我假设有一天可以并且可能会取决于前几天(而且我不需要所有 10 个属性),所以我考虑使用 RNN。我知道的不多,但我读了一些东西,还有这个。我想到了这样的结构。
我会有10 input neurons
,a hidden layer
和1 output neuron
. 我不知道如何决定隐藏层将有多少个神经元。
我想我需要一个矩阵来连接输入层和隐藏层,一个矩阵来连接隐藏层和输出层,以及一个矩阵来连接相邻时间步中的隐藏层,t-1
到t
,t
到t+1
。总共有3个矩阵。
在一个教程中,激活函数是sigmoid
,虽然我不确定,但如果我使用 sigmoid 函数,我只会得到 0 到 1 之间的输出。我应该使用什么作为激活函数?我的计划是重复n
几次:
- 对于每个训练数据:
- 前向传播
- 将输入传播到隐藏层,将其添加到先前隐藏层到当前隐藏层的传播。并将其传递给激活函数。
- 将隐藏层传播到输出。
- 查找错误及其导数,将其存储在列表中
- 反向传播
- 从列表中查找当前图层和错误
- 查找当前隐藏层错误
- 存储重量更新
- 通过将权重(矩阵)乘以学习率来更新权重(矩阵)。
- 前向传播
这是正确的方法吗?我想要真正的数值作为输出,而不是 0-1 之间的数字。