本文共 1305 字,大约阅读时间需要 4 分钟。
PyTorch中的张量是对机器学习中的数组数据进行扩展和操作的基础数据结构。张量在PyTorch中通过torch.tensor()创建,并具有动态计算图求导的特性。每个张量都有一个grad属性,用于存储梯度信息。
PyTorch提供了三类创建张量的方式:
torch.tensor()或torch.from_numpy()创建张量。torch.tensor()可以从Python列表、numpy数组等创建张量。t = torch.tensor([1, 2, 3], dtype=torch.float32)t = torch.from_numpy(np.array([1, 2, 3])).float()
PyTorch提供了多种函数用于依数值创建张量:
torch.zeros()torch.ones()torch.arange()torch.linspace()torch.logspace()torch.eye()torch.normal()torch.randn()torch.rand()torch.bernoulli()torch.randperm()PyTorch提供了多种函数用于对张量进行形态变换:
torch.cat():按维度拼接张量torch.stack():在新维度上拼接张量torch.chunk():按维度切分张量torch.split():按维度切分张量torch.index_select():按维度索引张量torch.masked_select():按掩码索引张量torch.reshape():改变张量的形状torch.transpose():交换张量的维度torch.t():两维张量转置torch.squeeze():压缩长度为1的维度torch.unsqueeze():扩展张量的维度计算图是PyTorch用于描述运算的有向无环图,主要由节点和边组成:
PyTorch通过torch.autograd提供自动求导功能,主要有两个API:
torch.autograd.backward():对所有节点求梯度torch.autograd.grad():对指定节点求梯度在反向传播过程中,非叶子节点的梯度会被释放,为了保留梯度需要手动调用retain_grad()。使用backward()方法进行反向传播。
requires_grad默认为True。转载地址:http://rwhlz.baihongyu.com/