循环神经网络与长短期记忆网络详解
1. RNN 数据集的考虑因素
在处理时间序列数据时,将其划分为训练集和测试集需要特别注意时间维度的影响。一种常见的错误做法是创建多个示例(输入序列加真实标签),然后在划分训练集和测试集之前进行洗牌。这样做可能会导致训练集中包含“未来”的数据点,而测试集中包含“历史”的数据点,这与模型在实际应用中的情况不符,可能会使测试结果过于乐观。因此,应避免在训练集中包含未来数据。
另外,训练和测试示例的长度可以选择可变长度或固定长度。可变长度的示例可以充分利用原始数据,但需要进行零填充以满足深度学习框架对小批量数据长度一致的要求。固定长度的示例则选择一个比原始数据允许的长度更短的值,但这可能会使模型无法学习到长距离依赖关系。
1.1 RNN 编程示例代码
test_y[i, 0] = test_sales_std[i+MIN]
# ...
model.add(SimpleRNN(128, activation='relu',
input_shape=(None, 2)))
1.2 RNN 堆叠层的注意事项
在 Keras 中堆叠多个循环层时,需要将 return_sequences 参数设置为 True 。因为默认情况下,Keras 只输出最后一个时间步的值,而当一个循环层的输出作为另一个循环层的输入时,第二个循环层期望看到每个时间步的输出。
超级会员免费看
订阅专栏 解锁全文
9107

被折叠的 条评论
为什么被折叠?



