Skip to content

Latest commit

 

History

History
116 lines (61 loc) · 4.87 KB

simple-derivatives-pytorch.md

File metadata and controls

116 lines (61 loc) · 4.87 KB

使用 PyTorch 计算简单导数

原文:www.kdnuggets.com/2018/05/simple-derivatives-pytorch.html

c 评论

使用 PyTorch 求导数很简单。像许多其他神经网络库一样,PyTorch 包含一个自动微分包 [autograd](https://pytorch.org/docs/master/autograd.html),它完成了繁重的工作。但在 PyTorch 中,导数的计算似乎尤其简单。

我希望在第一次学习如何将 导数和神经网络的实际应用结合起来时,有一些具体的例子,展示如何使用这样的神经网络包来找出简单的导数并进行计算,这些计算与神经网络中的计算图分开。PyTorch 的架构使得这种教学示例变得容易。

我不太确定这是否对那些想了解 PyTorch 如何实现自动微分、如何实际计算导数,甚至是学习“寻找导数”是什么意思的人有用,但我们还是试试看吧。也许这对这些人都没有帮助。 :)

PyTorch

首先,我们需要一个函数来找出导数。我们随意使用这个:

公式

我们应该记住,函数的导数可以被解释为切线的斜率,以及函数的变化率。

在我们使用 PyTorch 找出这个函数的导数之前,让我们先手动计算一下:

公式

公式

上述是我们原始函数的 一阶导数

现在让我们找出给定 x 值的导数函数值。我们随意使用 2

公式

公式

公式

公式

x = 2 求导数函数的结果是 233。这可以解释为在公式中,当 x = 2 时,yx 的变化率是 233。

使用 autograd 查找并求解导数

我们如何使用 PyTorch 的 autograd 包做与上面相同的事情?

首先,我们需要将原始函数在 Python 中表示为如下形式:

y = 5*x**4 + 3*x**3 + 7*x**2 + 9*x - 5
import torch

x = torch.autograd.Variable(torch.Tensor([2]),requires_grad=True)
y = 5*x**4 + 3*x**3 + 7*x**2 + 9*x - 5

y.backward()
x.grad

上述代码逐行解释:

  • 导入 torch 库

  • 定义我们想计算导数的函数

  • 将我们想要计算其导数的值(2)定义为 PyTorch Variable 对象,并指定它应以能够跟踪计算图中连接位置的方式进行实例化,以便通过链式法则 (requires_grad) 执行微分。

  • 使用 autograd[backward()](https://pytorch.org/docs/master/autograd.html#torch.autograd.backward) 计算梯度的总和,使用链式法则

  • 输出 x 张量的 grad 属性中存储的值,如下所示

tensor([ 233.])

这个值 233 与我们上面手动计算的结果一致。

若要进一步使用 PyTorch,包括使用 autograd 包和 Tensor 对象构建一些基础神经网络,我建议查看官方的 PyTorch 60 分钟快速教程这个教程

相关

  • PyTorch 张量基础

  • 什么是张量?!?

  • 提升你的数据科学技能。学习线性代数。


我们的前三名课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。

2. 谷歌数据分析专业证书 - 提升你的数据分析技能

3. 谷歌 IT 支持专业证书 - 支持你的组织进行 IT 管理


更多相关内容