利用pytorch 自动求导,计算cos(x^2)并写出反向传播求导的详细步骤。
时间: 2024-09-24 14:21:27 浏览: 45
关于PyTorch 自动求导机制详解
在PyTorch中,利用自动微分(Autograd)功能可以方便地进行梯度计算。这里我们将计算`cos(x^2)`的梯度,假设`x`是一个张量。首先,我们需要创建一个`Tensor`实例,然后定义计算函数并开启自动微分模式。
```python
import torch
# 创建一个张量并设置为autograd模式
x = torch.tensor(0.5, requires_grad=True)
# 定义计算函数
def cos_square(x):
return torch.cos(x**2)
y = cos_square(x)
print("原始值:", y.item())
# 计算函数结果
y.backward() # 这一步会自动计算整个计算图的梯度,并存储在x的grad属性上
# 输出梯度
print("x的梯度:", x.grad.item())
```
在这个例子中,`y.backward()`就是关键步骤,它触发了反向传播。当`y`的值被计算出来之后,PyTorch会沿着从`y`到输入`x`的方向构建一个计算图,并计算每个节点对`y`变化的敏感度,即梯度。最后,`x.grad`就包含了`x`对于目标函数`y`的影响,也就是`cos(x^2)`的导数。
阅读全文