Pytorch torch 参考手册
PyTorch 软件包包含了用于多维张量的数据结构,并定义了在这些张量上执行的数学运算。此外,它还提供了许多实用工具,用于高效地序列化张量和任意类型的数据,以及其他有用的工具。
它还有一个 CUDA 版本,可以让你在计算能力 >= 3.0 的 NVIDIA GPU 上运行张量计算。
PyTorch torch API 手册
| 类别 | API | 描述 | 
|---|---|---|
| Tensors | is_tensor(obj) | 
            检查 obj 是否为 PyTorch 张量。 | 
        
is_storage(obj) | 
            检查 obj 是否为 PyTorch 存储对象。 | 
        |
is_complex(input) | 
            检查 input 数据类型是否为复数数据类型。 | 
        |
is_conj(input) | 
            检查 input 是否为共轭张量。 | 
        |
is_floating_point(input) | 
            检查 input 数据类型是否为浮点数据类型。 | 
        |
is_nonzero(input) | 
            检查 input 是否为非零单一元素张量。 | 
        |
set_default_dtype(d) | 
            设置默认浮点数据类型为 d。 | 
        |
get_default_dtype() | 
            获取当前默认浮点 torch.dtype。 | 
        |
set_default_device(device) | 
            设置默认 torch.Tensor 分配的设备为 device。 | 
        |
get_default_device() | 
            获取默认 torch.Tensor 分配的设备。 | 
        |
numel(input) | 
            返回 input 张量中的元素总数。 | 
        |
| Creation Ops | tensor(data) | 
            通过复制 data 构造无自动梯度历史的张量。 | 
        
sparse_coo_tensor(indices, values) | 
            在指定的 indices 处构造稀疏张量,具有指定的值。 | 
        |
as_tensor(data) | 
            将 data 转换为张量,共享数据并尽可能保留自动梯度历史。 | 
        |
zeros(size) | 
            返回一个用标量值 0 填充的张量,形状由 size 定义。 | 
        |
ones(size) | 
            返回一个用标量值 1 填充的张量,形状由 size 定义。 | 
        |
arange(start, end, step) | 
            返回一个 1-D 张量,包含从 start 到 end 的值,步长为 step。 | 
        |
rand(size) | 
            返回一个从 [0, 1) 区间均匀分布的随机数填充的张量。 | |
randn(size) | 
            返回一个从标准正态分布填充的张量。 | |
| Math operations | add(input, other, alpha) | 
            将 other(由 alpha 缩放)加到 input 上。 | 
        
mul(input, other) | 
            将 input 与 other 相乘。 | 
        |
matmul(input, other) | 
            执行 input 和 other 的矩阵乘法。 | 
        |
mean(input, dim) | 
            计算 input 在维度 dim 上的均值。 | 
        |
sum(input, dim) | 
            计算 input 在维度 dim 上的和。 | 
        |
max(input, dim) | 
            返回 input 在维度 dim 上的最大值。 | 
        |
min(input, dim) | 
            返回 input 在维度 dim 上的最小值。 | 
        
Tensor 创建
| 函数 | 描述 | 
|---|---|
torch.tensor(data, dtype, device, requires_grad) | 
            从数据创建张量。 | 
torch.as_tensor(data, dtype, device) | 
            将数据转换为张量(共享内存)。 | 
torch.from_numpy(ndarray) | 
            从 NumPy 数组创建张量(共享内存)。 | 
torch.zeros(*size, dtype, device, requires_grad) | 
            创建全零张量。 | 
torch.ones(*size, dtype, device, requires_grad) | 
            创建全一张量。 | 
torch.empty(*size, dtype, device, requires_grad) | 
            创建未初始化的张量。 | 
torch.arange(start, end, step, dtype, device, requires_grad) | 
            创建等差序列张量。 | 
torch.linspace(start, end, steps, dtype, device, requires_grad) | 
            创建等间隔序列张量。 | 
torch.logspace(start, end, steps, base, dtype, device, requires_grad) | 
            创建对数间隔序列张量。 | 
torch.eye(n, m, dtype, device, requires_grad) | 
            创建单位矩阵。 | 
torch.full(size, fill_value, dtype, device, requires_grad) | 
            创建填充指定值的张量。 | 
torch.rand(*size, dtype, device, requires_grad) | 
            创建均匀分布随机张量(范围 [0, 1))。 | 
torch.randn(*size, dtype, device, requires_grad) | 
            创建标准正态分布随机张量。 | 
torch.randint(low, high, size, dtype, device, requires_grad) | 
            创建整数随机张量。 | 
torch.randperm(n, dtype, device, requires_grad) | 
            创建 0 到 n-1 的随机排列。 | 
Tensor 操作
| 函数 | 描述 | 
|---|---|
torch.cat(tensors, dim) | 
            沿指定维度连接张量。 | 
torch.stack(tensors, dim) | 
            沿新维度堆叠张量。 | 
torch.split(tensor, split_size, dim) | 
            将张量沿指定维度分割。 | 
torch.chunk(tensor, chunks, dim) | 
            将张量沿指定维度分块。 | 
torch.reshape(input, shape) | 
            改变张量的形状。 | 
torch.transpose(input, dim0, dim1) | 
            交换张量的两个维度。 | 
torch.squeeze(input, dim) | 
            移除大小为 1 的维度。 | 
torch.unsqueeze(input, dim) | 
            在指定位置插入大小为 1 的维度。 | 
torch.expand(input, size) | 
            扩展张量的尺寸。 | 
torch.narrow(input, dim, start, length) | 
            返回张量的切片。 | 
torch.permute(input, dims) | 
            重新排列张量的维度。 | 
torch.masked_select(input, mask) | 
            根据布尔掩码选择元素。 | 
torch.index_select(input, dim, index) | 
            沿指定维度选择索引对应的元素。 | 
torch.gather(input, dim, index) | 
            沿指定维度收集指定索引的元素。 | 
torch.scatter(input, dim, index, src) | 
            将 src 的值散布到 input 的指定位置。 | 
        
torch.nonzero(input) | 
            返回非零元素的索引。 | 
数学运算
| 函数 | 描述 | 
|---|---|
torch.add(input, other) | 
            逐元素加法。 | 
torch.sub(input, other) | 
            逐元素减法。 | 
torch.mul(input, other) | 
            逐元素乘法。 | 
torch.div(input, other) | 
            逐元素除法。 | 
torch.matmul(input, other) | 
            矩阵乘法。 | 
torch.pow(input, exponent) | 
            逐元素幂运算。 | 
torch.sqrt(input) | 
            逐元素平方根。 | 
torch.exp(input) | 
            逐元素指数函数。 | 
torch.log(input) | 
            逐元素自然对数。 | 
torch.sum(input, dim) | 
            沿指定维度求和。 | 
torch.mean(input, dim) | 
            沿指定维度求均值。 | 
torch.max(input, dim) | 
            沿指定维度求最大值。 | 
torch.min(input, dim) | 
            沿指定维度求最小值。 | 
torch.abs(input) | 
            逐元素绝对值。 | 
torch.clamp(input, min, max) | 
            将张量值限制在指定范围内。 | 
torch.round(input) | 
            逐元素四舍五入。 | 
torch.floor(input) | 
            逐元素向下取整。 | 
torch.ceil(input) | 
            逐元素向上取整。 | 
随机数生成
| 函数 | 描述 | 
|---|---|
torch.manual_seed(seed) | 
            设置随机种子。 | 
torch.initial_seed() | 
            返回当前随机种子。 | 
torch.rand(*size) | 
            创建均匀分布随机张量(范围 [0, 1))。 | 
torch.randn(*size) | 
            创建标准正态分布随机张量。 | 
torch.randint(low, high, size) | 
            创建整数随机张量。 | 
torch.randperm(n) | 
            返回 0 到 n-1 的随机排列。 | 
线性代数
| 函数 | 描述 | 
|---|---|
torch.dot(input, other) | 
            计算两个向量的点积。 | 
torch.mm(input, mat2) | 
            矩阵乘法。 | 
torch.bmm(input, mat2) | 
            批量矩阵乘法。 | 
torch.eig(input) | 
            计算矩阵的特征值和特征向量。 | 
torch.svd(input) | 
            计算矩阵的奇异值分解。 | 
torch.inverse(input) | 
            计算矩阵的逆。 | 
torch.det(input) | 
            计算矩阵的行列式。 | 
torch.trace(input) | 
            计算矩阵的迹。 | 
设备管理
| 函数 | 描述 | 
|---|---|
torch.cuda.is_available() | 
            检查 CUDA 是否可用。 | 
torch.device(device) | 
            创建一个设备对象(如 'cpu' 或 'cuda:0')。 | 
        
torch.to(device) | 
            将张量移动到指定设备。 | 
实例
实例
import torch
# 创建张量
x = torch.tensor([1, 2, 3])
y = torch.zeros(2, 3)
# 数学运算
z = torch.add(x, 1) # 逐元素加 1
print(z)
# 索引和切片
mask = x > 1
selected = torch.masked_select(x, mask)
print(selected)
# 设备管理
if torch.cuda.is_available():
device = torch.device('cuda')
x = x.to(device)
print(x.device)
# 创建张量
x = torch.tensor([1, 2, 3])
y = torch.zeros(2, 3)
# 数学运算
z = torch.add(x, 1) # 逐元素加 1
print(z)
# 索引和切片
mask = x > 1
selected = torch.masked_select(x, mask)
print(selected)
# 设备管理
if torch.cuda.is_available():
device = torch.device('cuda')
x = x.to(device)
print(x.device)
如果需要更详细的信息,可以参考 PyTorch 官方文档。
       
点我分享笔记