【发布时间】:2021-05-05 21:24:12
【问题描述】:
我正在编写一个基于 TensorFlow 的深度学习线性回归算法来预测未来的股票价格。我目前面临的问题是预测在整个学习过程中保持不变。我尝试了不同的学习率,我有足够多的数据。我该如何解决这个问题?
# model definition
model = tf.keras.Sequential([
tf.keras.layers.Dense(10, activation='linear', input_shape=(7,), kernel_regularizer='l2'), # input shape required
tf.keras.layers.Dense(40, activation="linear", kernel_regularizer='l2'),
tf.keras.layers.Dense(50, activation="relu", kernel_regularizer='l2'),
tf.keras.layers.Dense(1, activation="linear", kernel_regularizer='l2')
])
# learning rate control
initial_learning_rate = 0.5
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate,
decay_steps=40000,
decay_rate=0.05,
staircase=True)
# loss calculation
loss_fn = tf.keras.losses.MeanAbsoluteError()
# model
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=lr_schedule, clipnorm=1),
loss=loss_fn,
metrics=['accuracy'])
【问题讨论】:
-
在使用学习率计划之前,您应该先查看是否有信号,因此删除计划并使用默认值。此外,对所有隐藏层使用
'relu',否则您的神经网络将无法生成非线性函数。准确性在这里没有意义,删除它。 -
数据怎么样:你是否将其缩放到(0, 1)?这可能会有所帮助。
标签: python tensorflow keras deep-learning loss-function