如何从多组数据训练神经网络?

How do I train a neural network from many sets of data?

我有很多组相关数据想用来训练神经网络。数据来自飞行一定距离的赛鸽。输入可以是体重、年龄、体型、翼展、性别、距离、时间等。可以说是每分钟采样一次。 我试图预测一只鸽子在给定输入的情况下完成一场比赛所需的典型时间。 输入数据将被归一化以提高网络的效率。 典型的数据行可能看起来像体重、年龄、体型、翼展、性别、距离、时间 -1.34、-1.23、-0.49、0.47、0.97、-1、-1.44、-0.75 随着比赛的进行,会有很多这样的线,最后每只鸽子都会有一个时间结果。即3小时5分钟。 然后我会有一套完整的比赛数据,但显然每场比赛都会有所不同,所以我需要一种针对许多比赛进行训练的方法。 我的问题是,因为每场比赛都是一个谨慎的事件,我应该使用什么方法来训练网络。我感到困惑的是,这不是我可以让它开始工作的连续数据流。我应该用一个 set\race 来训练它,直到它学会了然后转到下一个等等,或者是否有一种方法可用于此类问题。

谢谢!

如果我正确理解你的问题,你有:

  1. 一组比赛
  2. 对于每场比赛,您都有一组鸽子
  3. 对于比赛中的每只鸽子,您每分钟都会记录一系列值。
  4. 对于比赛中的每只鸽子,您也有他的最后时间。
  5. 你想根据现场比赛中迄今为止记录的一系列值来预测鸽子的最后时间。

如果这一切都是正确的,那么我会观察到以下几点:

  1. 出于这个问题的目的,忽略两只鸽子是在同一场比赛还是在两场不同的比赛中飞行是有意义的。这样,a"race"的概念就可以去掉了,输入数据现在可以只认为是鸽子飞过的一组记录。
  2. 本质上,您的数据是时间序列。常规前馈网络不适用于时间序列。您需要使用循环网络。目前,在实践中经常使用的两种递归网络是LSTMs和GRUs。

从头开始编写递归神经网络不是一个好主意。选择一个框架(Keras、TensorFlow、Mxnet 等),查找有关如何在该框架中训练 LSTM 的文档——它们都有此类教程——并根据您的用例进行调整。

(This was intended to be a comment, but became too long, so I put it as answer ;) )

关于通过反向传播训练的前馈神经网络,有一件重要的事情要记住:反向传播算法通过一次又一次地遍历完整的数据集来调整权重,因此(希望)改进结果并找到一个好的一组。

此过程完成后,权重是固定的,您不能包含更多信息(只会调整权重以适应新数据)。

这意味着,您要么同时训练所有种族(如@Ishamael 所建议),要么您为每个种族训练不同的神经网络

或者您转移到其他类型的网络并learning algorithms

最后的问题是网络训练好后要做什么?