使用天气数据,我建立了一个带有一层 GRU 的简单 RNN。根据过去 5 天的天气数据(每天间隔 1 小时),训练它以恢复第二天的温度。
我觉得奇怪的是,在训练了几个 epoch 之后,结果是有很多数据的小规模特征,但缺乏大规模的结构。通常,预测和数据之间似乎只有一个偏移量,例如在下面的 x=900 处。另一方面,非常陡峭的山峰也没有很好地拟合。
这是模型的代码:
model = keras.Sequential()
model.add(keras.layers.GRU(units=120,
activation='relu',
dropout=0.1,
recurrent_dropout=0.4,
return_sequences=False,
input_shape=(120, 14)))
model.add(keras.layers.Dense(1))
model.compile(optimizer=keras.optimizers.RMSprop(),loss='mse')
训练集有 120 个(=5 天)天气数据,每个时间点有 15 个变量。例如,这些是第一个训练集中 120 个向量中的前 2 个:
print (training_x[0,0:2,:])
[[ 0.87422976 -2.0740129 -2.12744145 -2.05861548 1.04950092 -1.32397418
-1.53525603 -0.78058659 -1.53697269 -1.53946235 2.29360559 -0.01027133
-0.01893096 -0.25892163 -1.72366227]
[ 0.87183698 -2.02652589 -2.07923146 -1.96947126 1.14054157 -1.30976048
-1.49940654 -0.78875511 -1.49932401 -1.50404649 2.24182343 -0.02325901
-0.03515888 -0.09510368 -1.72366227]]
他们事先被标准化。
(我应该注意到它是基于此)
我试图弄清楚这是否是一个众所周知的现象和/或我应该在哪个方向改变我的模型以进行补偿。我使用了 120 个 GRU“单元”,然后是一个单元密集层。
