首页 > 解决方案 > 使用张量、lambda 和 python 变量绑定自定义学习率衰减

问题描述

我正在尝试构建一个自定义 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()获取张量对象,以及张量到底是什么。

可能的重复

标签: pythontensorflowmachine-learning

解决方案


推荐阅读