循环神经网络的训练和测试集

我正在构建一个由遗传算法优化的rNN。这是我在这一领域的第一个项目,所以有些事情让我感到困惑。如果有人能帮助我更好地理解这些问题,我将不胜感激。

首先,ANN和rNN的训练和测试数据集看起来非常不同。例如,如果我在预测时间序列,我有一组n个观测值。我应该如何使用这些数据呢?我是需要n个输入神经元还是1个输入神经元?我如何计算误差?是每一代都计算,还是每k代计算一次?我是否需要在k代上进行平均(即,适应度函数将是k代的均方误差)。

在n代之后,我到达了样本的末尾,我需要重复它多次吗?在这种情况下,我应该使用相同的样本还是不同的样本作为测试集?

我知道这是很多问题,但如果有人能帮助我解答其中一些,我将不胜感激。


回答:

我猜你所说的预测时间序列是指你有一系列数据,并且你试图预测下一个值。如果是这样的话,你只需要一个输入节点,因为你每次只有一条数据来进行预测(如果我的假设不正确,你实际上是基于整个时间序列进行一次分类,那么你将需要n个输入节点)。

如果你使用“代”这个词是在遗传算法的意义上,我认为没有办法避免每一代都计算误差,因为你需要在每一代评估种群中所有成员的适应度,以便生成下一代。然而,因为你提到在一定数量的代之后到达样本的末尾,听起来你可能实际上是在讨论将神经网络运行在时间序列的连续点上。看起来你确实需要某种错误指标来考虑时间序列中每个点的误差。最简单的方法可能是随着时间的推移将它们加起来。在最后除以k来获得平均值可能会更直观(我们倾向于更多地考虑给定估计的平均误差而不是总和误差),但由于k是一个常数,只要你保持一致,你在适应度函数中使用哪一个实际上并不重要。

如果我对你问题的理解到目前为止是正确的,你基本上是通过将整个时间序列数据运行在神经网络上并跟踪误差来评估你种群中每个候选神经网络的适应度。由于整个过程就是你的适应度函数,你需要在每一代为每个候选结构运行它。因此,这个样本可以被认为是你的训练集。为了更普遍地评估成功,你需要有一个不同的时间序列作为测试集。

希望这对你有帮助!如果我误解了你的问题,或者其中任何部分不清楚,请告诉我。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注