TensorFlow如何计算梯度?
0 783
0
该提问暂无详细描述
收藏
2021-01-20 15:54 更新 阿托 •  17009
共 1 个回答
高赞 时间
0

有几种不同的计算梯度的方法:

  1. 数值微分使用梯度的有限差分近似,在彼此非常接近的两个点上计算函数的值来近似导数。

  2. 符号差异与微积分的方法相似,将函数视为可以使用已知规则推导的数学表达式。

  3. 自动微分依赖于每个计算机程序最终都会将数学表达式评估为一系列具有其自身导数的基本函数。

神经网络反向传播算法的优势是,梯度可以通过链式规则进行组合。

自动微分中,每个在张量(变量)上执行的操作都具有前进和后退两个步骤。

在后退过程的训练中,计算每个底层操作的后退步骤,然后将结果传到下一个操作的后退步骤中。

当函数的输入维数大于其输出维数时,反向累加对比其前向累加的优势就会显现出来。实际上,必须对输入(正向累积)或输出(反向累积)的每个维度分别执行一次网络扫描。

通常情况下,神经网络中的输入维数明显大于输出的维数,这是因为TensorFlow框架更喜欢反向累加。

使用反向累加是为了能够利用单独的梯度和TensorFlow的Eager执行模式来计算梯度。使用前向累加可以忽略这个概念,但是会以潜在更高的计算成本作为代价。

收藏
2021-01-20 16:41 更新 正直的烤面包 •  3992