我试图根据之前的 50 个输入预测加密货币的 5 个周期价格。
>>> X_train.shape, X_test.shape, Y_train.shape, Y_test.shape
((291314, 50, 8), (72829, 50, 8), (291314, 5), (72829, 5))
在这里,我有50个先前的样本x 8个特征作为输入样本,接下来5个时期的价格作为输出
我使用以下代码构建模型:
from tensorflow.keras.layers import GRU
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation
model = Sequential()
model.add(GRU(units=50, input_shape=X_train.shape[1:], return_sequences=False))
model.add(Activation('tanh'))
model.add(Dropout(0.2))
model.add(Dense(NFS))
model.add(Activation('relu'))
model.compile(loss='mse', optimizer='adam')
model.fit(X_train, Y_train, batch_size=50, validation_data=(X_test, Y_test), epochs=2)
这给了我输出:
Train on 291314 samples, validate on 72829 samples
Epoch 1/2
291314/291314 [==============================] - 487s 2ms/step - loss: 0.0107 - val_loss: 0.2502
Epoch 2/2
291314/291314 [==============================] - 463 2ms/step - loss: 0.0103 - val_loss: 0.2502
在此步骤之后,我尝试预测X_test的输出,但没有预测,而是得到了形状正确但充满零的矩阵,而不是任何预测:
>>> model.predict(X_test)
array([[-0., -0., -0., -0., -0.],
[-0., -0., -0., -0., -0.],
[-0., -0., -0., -0., -0.],
...,
[-0., -0., -0., -0., -0.],
[-0., -0., -0., -0., -0.],
[-0., -0., -0., -0., -0.]], dtype=float32)
为什么我会变得这么糟糕?我是否使用正确的方式做我想做的事?
UPD:这是完整的笔记本。
烙印99
相关分类