如何在TensorFlow中计算非零参数的梯度

时间:2019-07-12 12:25:08

标签: tensorflow-gradient

我希望针对TensorFlow中的非零参数计算损失函数的梯度。与内置优化器(例如tf.GradientDescentOptimizer)相反。我也希望执行更新-因此使用 tf.compute_gradients()tf.gradients(loss, params)

我尝试使用以下链接中提供的方法: TensorFlow - How to compute gradient while ignoring zero weights? 但无法将其添加到我的代码中。我的代码段如下:

    def myupdatefunction(loss, params, learning_rate, epochs, feed_dict):
        grad_vars = tf.gradients(loss, params)
        params_new = params.assign_sub(params, learning_rate * grad_vars)
        session = tf.Session()
        for _ in range(epochs):
            session.run(params_new, feed_dict)
            params_upd = applysomeCondition(params)
            params_zero = tf.where(tf.equal(params_upd, 0))
            params.assign(params_upd)
        session.close()

我希望了解如何将params_upd传递给tf.gradients(loss, params_upd),以便在后续更新期间可以识别和忽略params_zero。有没有办法掩盖params_upd对应于params_zero?

的元素

0 个答案:

没有答案