【问题标题】:Model predicting constant模型预测常数
【发布时间】: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


【解决方案1】:

如果你不能“学习”任何东西,那几乎可以肯定是你的学习率。尝试小至 1e-5 并从那里上来。

【讨论】:

    【解决方案2】:

    因为这是你的回归问题,所以在第三层使用activation='linear'。此外,您的学习率似乎很高。使用1e^-4

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多