我正在尝试使用反向传播编写一个天气预报程序。我是这个领域的初学者。我有不同参数的历史数据,如温度、湿度、风速、降雨量等。
我对如何将这些数据提供给输入层感到困惑。是否要为每个输入节点提供给定日期的全部数据,还是我需要为每个参数设置不同的网络?我也对输出层感到困惑。
我正在尝试使用反向传播编写一个天气预报程序。我是这个领域的初学者。我有不同参数的历史数据,如温度、湿度、风速、降雨量等。
我对如何将这些数据提供给输入层感到困惑。是否要为每个输入节点提供给定日期的全部数据,还是我需要为每个参数设置不同的网络?我也对输出层感到困惑。
在输入层中,输入数据的每个维度(天气、风等)都有 X 个单独的节点,其中 X 是要回顾的天数(比如说 4-7)。然后你应该在一个合适的范围内标准化每个输入维度,比如说[-1.0, 1.0]。
让第二个“隐藏”层与第一层完全互连(并且还具有一个固定 1.0 输入“偏置”节点作为固定点)。这里的节点应该比输入层少,但这只是一个经验法则,您可能需要进行实验。
最后一层是与第二层完全互连的输出层(也有偏差)。每个维度都有一个单独的输出神经元。
不要忘记在输入和输出上使用归一化值进行训练。由于这是一个时间序列,您可能不需要随机化训练数据的顺序,而是及时提供它们 - 您的网络也会学习时间关系(运气好 :)
(另请注意,有一种称为“时间反向传播”的方法针对时间序列数据进行了调整。)
我使用过(并拥有)这本书:Java 神经网络简介
我发现它是一个有用的参考。它涵盖了相当多的 NN 主题,包括反向传播。