说到深度学习,我还是个新手。我正在尝试使用不同的指数来预测每年的确切整数数字。我的数据集(称为“x”)是这样的。(它一直持续到2008年)
SF 10.7 SOI N12 N3 N34 N4 BEST lv TNA TSA WHWP ... PWR TPSE ATSE AMOL AMM NTA CAR QBO GIAM counts
Unnamed: 0
1979 1803.0 1.1 0.16 -0.15 -0.29 -0.24 -0.08 0.42 0.10 -0.81 ... -0.200 0.517 0.514 -0.051 1.96 0.11 -0.20 -19.60 0.68 2
1980 1932.0 -0.0 -0.36 0.08 0.21 0.16 0.64 0.47 -0.08 1.21 ... -0.163 0.781 0.645 0.100 3.64 0.07 0.10 7.33 0.45 3
1981 1569.0 2.0 -0.63 -0.43 -0.46 -0.59 -0.47 0.18 -0.22 -0.80 ... -0.041 -0.190 0.220 -0.066 2.19 -0.07 -0.08 -3.49 0.20 0
1982 1719.0 -1.7 0.13 0.54 0.53 0.45 1.74 -0.15 -0.45 -0.14 ... -0.273 1.468 -0.734 -0.188 -0.30 -0.24 -0.19 -15.94 1.14 3
我的目标数据(称为“y”)是这样的。
[2 3 0 3 3 1 3 0 1 2 3 1 4 4 2 2 2 0 3 4 1 3 1 4 1 1 2 1 0 2]
数据集x有两个维度,长度为30,目标数据集有一个维度,长度为30,所以它们有相同的时间尺度。
我选择了数据集x的第一列
Unnamed: 0
1979 1803.0
1980 1932.0
1981 1569.0
1982 1719.0
1983 1386.0
1984 1003.0
1985 761.0
1986 676.0
1987 779.0
1988 1394.0
1989 2396.0
1990 1709.0
1991 2068.0
1992 1167.0
1993 1093.0
1994 773.0
1995 757.0
1996 696.0
1997 717.0
1998 1084.0
1999 1698.0
2000 1798.0
2001 1737.0
2002 1487.0
2003 1293.0
2004 974.0
2005 937.0
2006 765.0
2007 737.0
2008 659.0
Name: SF 10.7, dtype: float64
在那之后,我试图用这些代码得到一个试验结果。
model = Sequential([
Dense(1, kernel_initializer='normal', activation = "relu", input_shape=(1,))
model.compile(loss='mean_squared_error',
optimizer=Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8),
metrics=[metrics.mse, metrics.mean_absolute_percentage_error])
])
train_history = model.fit(x, y, epochs=50, batch_size=10, validation_split=0.2, verbose=0)
plt.figure(figsize=(12, 4))
plt.scatter(xx, y, alpha=0.7, label='y_true')
plt.scatter(xx, model.predict(xx), alpha=0.7, label='y_pred')
plt.legend()
plt.show()
但是我得到的预测结果总是只有0!数字证明了这一点。所有的y_preds都有0。x1c 0d1x
我真的不知道这个问题。我是否有一个问题的维度或什么。。请帮助我!
1条答案
按热度按时间xkrw2x1b1#
模型=顺序([密集(1,内核初始化器=“正常”,激活=“relu”,输入形状=(1,))
您的模型只有一个神经元,不足以学习该函数。请尝试向模型添加更多层。