tensorflow.compat.v1的自定义优化器

时间:2019-08-22 10:14:18

标签: python tensorflow

我正在尝试创建与tensorflow.compat.v1兼容的优化器,该优化器使用OptimizerV2作为基类,并在optimizer_v2.py中定义

Optimer类的经典keras版本更容易理解,例如在函数中

get_updates(self, loss, params):

您可以通过

进行确认
param.name

当前正在分析哪一层。

相反,例如,在optimizer_v2中有函数

_resource_apply_dense(self, grad, var)

我尝试检查 var ,它有一个 .name 参数,但不是“唯一的”。我的意思是,例如,通过拥有一个名为 d 的最终Dense层,fit_generator的每一步调用两次带有 .name 的函数,该函数等于

d/kernel:0
d/bias:0

让我们说我只想为该密集层 d 更改动量学习率,以下算法正确吗?

检查变量名称是否等于 d /内核:0 d /偏差:0 ,例如,执行< / p>

# Retrives the actual learning rate, dtype is a float32
lr_t = self._decayed_lr(var_dtype)
lr_t = lr_t * 1e-1
...
# If i want to apply the standard gradient_descent (same as the optimizer SGD)
return training_ops.resource_apply_gradient_descent(
          var.handle, lr_t_updated, grad, use_locking=self._use_locking)

这是否仅对 d 层设置了学习速度,比其他层小10倍?

0 个答案:

没有答案