gpt4 book ai didi

python - Tensorflow 中的无导数学习算法

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:40 25 4
gpt4 key购买 nike

我正在尝试在 Tensorflow 中实现无导数学习算法。因此,一种不使用反向传播的学习算法,例如所讨论的 here .

据我了解,默认的优化器都实现了反向传播。我可以按照 here 所述操作梯度值:

# Create an optimizer.
opt = GradientDescentOptimizer(learning_rate=0.1)

# Compute the gradients for a list of variables.
grads_and_vars = opt.compute_gradients(loss, <list of variables>)

# grads_and_vars is a list of tuples (gradient, variable). Do whatever you
# need to the 'gradient' part, for example cap them, etc.
capped_grads_and_vars = [(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]

# Ask the optimizer to apply the capped gradients.
opt.apply_gradients(capped_grads_and_vars)

但我没有看到一种实现不依赖反向传播的学习算法的方法。此外,我想使用的 forumla 不需要导数,所以我认为根本没有必要计算梯度?<​​/p>

是否有任何方法可以修改/创建优化器以使用反向传播以外的其他方式来调整权重?

最佳答案

虽然到目前为止我还没有实现自己的优化器,但我仔细检查了 TensorFlow 架构,因为我目前正在为它编写一个 Wrapper。

据我了解,您可以通过扩展 tf.train.Optimizer 来实现自己的优化器类(就像当前在 TensorFlow 中实现的所有其他优化器一样)。

通俗地说,TensorFlow 中的优化器由 Python(或任何其他客户端语言)和 C++ 部分组成。后者实现核心功能,即 TensorFlow Graph 中的 Ops,如定义的训练 Ops here .

优化器的 Python 部分将 Ops 添加到图形定义中。它提供传递给 Ops 的参数,并对优化器进行一些高级管理。

所以这是我建议您可以尝试的方法:

  1. 编写您自己的基本优化器类的实现。

  2. 要实现您的公式,您必须定义一个 Op,如 Adding an Op Documentation 中所述。 .

关于python - Tensorflow 中的无导数学习算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48423019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com