十进制导数学习算法

2024-05-18 07:55:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在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不需要导数,所以我认为根本没有必要计算梯度?在

有没有方法可以修改/创建一个优化器来使用反向传播之外的另一种方法来调整权重?在


Tags: andofthe方法算法forherevars
1条回答
网友
1楼 · 发布于 2024-05-18 07:55:08

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

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

随便讲,TysFooad中的优化器由Python(或任何其他客户端语言)和C++部分组成。后者实现了核心功能,即张量流图中的操作,如定义的训练操作here。在

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

所以我建议你试试:

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

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

相关问题 更多 >