【发布时间】:2021-01-23 17:31:20
【问题描述】:
我正在学习如何在 Keras 上训练 RNN 模型,我期待训练一个模型来预测最后 N 步的移动平均线会很容易。
我有一个包含数千步的时间序列,我能够创建一个模型并使用批量数据对其进行训练。
如果我使用以下模型对其进行训练,则测试集的预测与实际值有很大不同。 (批次 = 30,移动平均窗口 = 10)
inputs = tf.keras.Input(shape=(batch_length, num_features))
x = tf.keras.layers.LSTM(10, return_sequences=False)(inputs)
outputs = tf.keras.layers.Dense(num_labels)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs, name="test_model")
为了能够获得良好的预测,我需要添加另一层 TimeDistributed,获得 2D 预测而不是 1D 预测(每个时间步都会得到一个预测)
inputs = tf.keras.Input(shape=(batch_length, num_features))
x = tf.keras.layers.LSTM(10, return_sequences=True)(inputs)
x = tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(num_labels))(x)
outputs = tf.keras.layers.Dense(num_labels)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs, name="test_model")
【问题讨论】:
-
预测最后 10 个时间步长?您正在尝试训练 RNN 来学习如何平均?
-
是的,是最后10个时间步长的线性函数,所以节点少应该不难,还是第一个版本做不到。
标签: tensorflow machine-learning keras deep-learning lstm