分布式训练时如何在 TensorFlow 中应用梯度裁剪?

问题描述

我想知道在分布式训练时如何在 TensorFlow 中应用梯度裁剪。 这是我的代码

    @lazy_property
    def optimize(self):
        # train_vars = ...
        optimizer = tf.train.AdamOptimizer(self._learning_rate)
        self.syn_op = tf.train.SyncReplicasOptimizer(optimizer,replicas_to_aggregate=self.gradient_merge,total_num_replicas=self.worker_count,use_locking=True)
        self.sync_replicas_hook = self.syn_op.make_session_run_hook(is_chief=self.is_chief)
        return self.syn_op.minimize(self.cost,var_list=train_vars,global_step=self.global_step)

我已阅读此答案:How to apply gradient clipping in TensorFlow。 下面是答案中渐变剪辑的代码

        optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
        gvs = optimizer.compute_gradients(cost)
        capped_gvs = [(tf.clip_by_value(grad,-1.,1.),var) for grad,var in gvs]
        train_op = optimizer.apply_gradients(capped_gvs)

我应该在哪里更改以在我的情况下使用它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...