11

我正在尝试使用反向传播编写一个天气预报程序。我是这个领域的初学者。我有不同参数的历史数据,如温度、湿度、风速、降雨量等。

我对如何将这些数据提供给输入层感到困惑。是否要为每个输入节点提供给定日期的全部数据,还是我需要为每个参数设置不同的网络?我也对输出层感到困惑。

4

3 回答 3

3

在输入层中,输入数据的每个维度(天气、风等)都有 X 个单独的节点,其中 X 是要回顾的天数(比如说 4-7)。然后你应该在一个合适的范围内标准化每个输入维度,比如说[-1.0, 1.0]。

让第二个“隐藏”层与第一层完全互连(并且还具有一个固定 1.0 输入“偏置”节点作为固定点)。这里的节点应该比输入层少,但这只是一个经验法则,您可能需要进行实验。

最后一层是与第二层完全互连的输出层(也有偏差)。每个维度都有一个单独的输出神经元。

不要忘记在输入和输出上使用归一化值进行训练。由于这是一个时间序列,您可能不需要随机化训练数据的顺序,而是及时提供它们 - 您的网络也会学习时间关系(运气好 :)

(另请注意,有一种称为“时间反向传播”的方法针对时间序列数据进行了调整。)

于 2010-02-07T18:48:22.197 回答
2

我使用过(并拥有)这本书:Java 神经网络简介

我发现它是一个有用的参考。它涵盖了相当多的 NN 主题,包括反向传播。

于 2010-02-07T18:55:47.677 回答
2

在我看来,决策树可能是比神经网络更好的解决方案。是对决策树如何工作的描述。此外,还有一些软件可以实现各种分类器,包括神经网络。我和Weka合作过,效果很好。还有一些库可用于将 Weka 的功能与 Java 和 C# 等编程语言结合使用。如果您决定使用 Weka,请确保您熟悉此处描述的 .arff 格式。

于 2010-02-07T18:47:28.327 回答