PyTorch的Reduction操作、自动微分Autograd
时间: 2023-05-29 11:06:20 浏览: 124
PyTorch中的Reduction操作是指将一个张量沿着某个或某些维度进行缩减操作,得到一个新的张量。常见的Reduction操作有sum、mean、max、min等,可以使用PyTorch中的函数进行实现。
例如,下面的代码将一个二维张量沿着第一维进行sum操作:
```
import torch
x = torch.tensor([[1, 2], [3, 4]])
y = torch.sum(x, dim=0) # 沿着第一维进行sum操作
print(y)
```
输出结果为:
```
tensor([4, 6])
```
自动微分Autograd是PyTorch的一个重要特性,它可以自动地计算张量的导数。PyTorch中的张量都有一个.grad属性,用于存储该张量对应的导数。使用PyTorch的autograd功能可以轻松地计算复杂的梯度,无需手动编写复杂的反向传播算法。
例如,下面的代码演示了如何使用autograd计算一个函数的导数:
```
import torch
x = torch.tensor(2.0, requires_grad=True) # 创建一个张量,并开启自动求导
y = x ** 2 + 3 * x + 1 # 定义一个函数
y.backward() # 自动计算y对x的导数
print(x.grad) # 输出x的导数
```
输出结果为:
```
tensor(7.)
```
在这个例子中,我们首先创建了一个张量x,并通过requires_grad=True参数开启了自动求导功能。然后定义了一个函数y,并通过y.backward()计算了y对x的导数。最后通过x.grad属性获取了x的导数。
阅读全文