怎么计算梯度
时间: 2023-09-29 15:05:17 浏览: 49
在 PyTorch 中,计算梯度需要通过 `backward()` 方法来实现。具体步骤如下:
1. 创建需要计算梯度的张量,并设置 `requires_grad=True`。
```python
import torch
x = torch.tensor([1., 2., 3.], requires_grad=True)
```
2. 使用这些张量进行计算。
```python
y = x * 2
z = y.mean()
```
3. 调用 `backward()` 方法计算梯度。
```python
z.backward()
```
4. 使用 `grad` 属性获取计算得到的梯度。
```python
print(x.grad)
```
完整的示例代码如下:
```python
import torch
x = torch.tensor([1., 2., 3.], requires_grad=True)
y = x * 2
z = y.mean()
z.backward()
print(x.grad)
```
运行结果为:
```
tensor([0.6667, 0.6667, 0.6667])
```
上面的代码中,`x` 对应的梯度值为 `[0.6667, 0.6667, 0.6667]`。这是因为 `z = y.mean()` 对 `y` 每个元素求平均值得到标量 `z`,然后再对 `z` 求关于 `x` 的梯度,即 $\frac{\partial z}{\partial x_i}$,得到的结果就是 `[0.6667, 0.6667, 0.6667]`。
阅读全文