【问题标题】:Change Hyperparameters on an ongoing simulation of TensorFlow在 TensorFlow 的持续模拟中更改超参数
【发布时间】:2018-08-07 06:07:43
【问题描述】:

我想知道是否可以在 TensorFlow 模拟期间实时更改一些超参数,比如学习率或正则化。

类似于:您正在监控神经网络 (NN) 的成本函数,然后您决定如果减少正则化项,您的 NN 可能会做得更好。 但是你想在不打断一切的情况下做到这一点。例如,只需在某处输入新值,然后在下一个 epoch 更改正则化。

【问题讨论】:

  • 是的,您可以这样做。如果您使用 saver() 对象保存模型,那么您可以手动执行您所描述的操作。
  • 我知道如何在 keras 中做到这一点。您可以循环说例如 30 个时期。在每个时期之后,keras 模型返回具有准确性和其他信息的历史对象。然后在开始下一个纪元之前基于该信息,您可以在模型对象中设置优化器/正则化。

标签: python tensorflow neural-network


【解决方案1】:

您可以只声明您的超参数具有placeholder 或不可训练的Variable,并根据需要使用feed_dict 更改它们。

lr = tf.get_variable('learning_rate',initializer=tf.constant(1), trainable=False)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(lr)) # prints 1
    print(sess.run(lr, {lr: 10})) # prints 10

【讨论】:

  • 输入大小、隐藏大小、层数等等呢?我认为在 Tensorflow 训练期间无法更改这些超参数。
  • 据我所知,这是不可能的,因为这会导致图表的修改。
猜你喜欢
  • 2020-11-03
  • 2018-06-02
  • 2018-03-13
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多