我正在尝试构建自定义的TensorFlow估算器并对其进行训练。
我希望能够通过额外的参数修改其行为。具体来说,要设置优化程序,并指定依赖于纪元的学习速率的公式。
例如,理想情况下,我可以这样做:
model = tf.estimator.Estimator(
model_fn=model_fn,
params={
...
"optimizer": tf.train.MomentumOptimizer(
learning_rate=0.001 * tf.train.global_step()**(-0.75),
momentum=0.5
),
...
}
)
model.train()
我该怎么做呢?
经过一番探讨之后,对我来说很明显,上述方法不起作用,因为tf.train.global_step()
取决于会话,而我至少没有会话直到我拨打model.train()
。
我也知道可能会有某种巫术让我将调用推迟到tf.train.global_step()
,直到model_fn实际运行tf.Estimator
。
我只是对整个事情如何协同工作感到茫然,并希望得到一些帮助
1.解决这个问题
2.了解变量绑定的工作原理
3.理解tf.train.global_step()
如何获取张量对象,以及张量究竟是什么。
tensorflow: use py_func to define custom learning rate decay before applied to optimizer 这家伙是一个混乱的人。使用自定义优化器。我不想进入那个。
TensorFlow: How to set learning rate decay based on epochs? 我不关心时代。
TensorFlow learning rate decay - how to properly supply the step number for decay?
这看起来就像我希望的那样,但我不知道如何将其翻译成tf.Estimators
的语言。