Pytorch torch 参考手册
PyTorch 软件包包含了用于多维张量的数据结构,并定义了在这些张量上执行的数学运算。此外,它还提供了许多实用工具,用于高效地序列化张量和任意类型的数据,以及其他有用的工具。
它还有一个 CUDA 版本,可以让你在计算能力 >= 3.0 的 NVIDIA GPU 上运行张量计算。
PyTorch torch API 手册
Tensors 类型判断
| 函数 | 描述 |
|---|---|
torch.is_tensor(obj) |
检查 obj 是否为 PyTorch 张量。 |
torch.is_storage(obj) |
检查 obj 是否为 PyTorch 存储对象。 |
torch.is_complex(input) |
检查 input 数据类型是否为复数数据类型。 |
torch.is_conj(input) |
检查 input 是否为共轭张量。 |
torch.is_floating_point(input) |
检查 input 数据类型是否为浮点数据类型。 |
torch.is_nonzero(input) |
检查 input 是否为非零单一元素张量。 |
torch.set_default_dtype(d) |
设置默认浮点数据类型为 d。 |
torch.get_default_dtype() |
获取当前默认浮点 torch.dtype。 |
torch.set_default_device(device) |
设置默认 torch.Tensor 分配的设备为 device。 |
torch.get_default_device() |
获取默认 torch.Tensor 分配的设备。 |
torch.set_default_tensor_type(tensor_type) |
设置默认张量类型为 tensor_type。 |
torch.numel(input) |
返回 input 张量中的元素总数。 |
torch.set_printoptions(...) |
设置张量打印选项。 |
Tensor 创建
索引、切片、连接、变异操作
随机数生成
| 函数 | 描述 |
|---|---|
torch.manual_seed(seed) |
设置随机种子(CPU)。 |
torch.seed() |
设置随机种子并返回新的种子值。 |
torch.initial_seed() |
返回当前随机种子。 |
torch.get_rng_state() |
返回随机数生成器状态。 |
torch.set_rng_state(state) |
设置随机数生成器状态。 |
torch.rand(*size, dtype, device, requires_grad) |
创建均匀分布随机张量(范围 [0, 1))。 |
torch.rand_like(input, dtype, device, requires_grad) |
创建与输入相同形状的均匀分布随机张量。 |
torch.randn(*size, dtype, device, requires_grad) |
创建标准正态分布随机张量。 |
torch.randn_like(input, dtype, device, requires_grad) |
创建与输入相同形状的标准正态分布随机张量。 |
torch.randint(low, high, size, dtype, device, requires_grad) |
创建整数随机张量。 |
torch.randint_like(input, low, high, dtype, device, requires_grad) |
创建与输入相同形状的整数随机张量。 |
torch.randperm(n, dtype, device, requires_grad) |
创建 0 到 n-1 的随机排列。 |
torch.bernoulli(input, *, generator) |
从伯努利分布生成随机数。 |
torch.multinomial(input, num_samples, replacement, generator) |
多项式采样。 |
torch.normal(mean, std, out) |
从正态分布生成随机数。 |
torch.poisson(input, generator) |
从泊松分布生成随机数。 |
序列化
| 函数 | 描述 |
|---|---|
torch.save(obj, f, pickle_module, pickle_protocol) |
保存对象到文件。 |
torch.load(f, map_location, pickle_module, weights_only) |
从文件加载对象。 |
梯度控制
| 函数 | 描述 |
|---|---|
torch.no_grad() |
上下文管理器,禁用梯度计算。 |
torch.enable_grad() |
上下文管理器,启用梯度计算。 |
torch.set_grad_enabled(grad) |
设置是否启用梯度计算。 |
torch.is_grad_enabled() |
检查是否启用梯度计算。 |
torch.inference_mode() |
上下文管理器,推理模式(禁用梯度和 autograd)。 |
torch.is_inference_mode_enabled() |
检查是否启用推理模式。 |
数学运算 - 点操作
数学运算 - 归约操作
数学运算 - 比较操作
数学运算 - 谱操作
数学运算 - 其他操作
线性代数 (BLAS 和 LAPACK)
设备管理
| 函数 | 描述 |
|---|---|
torch.cuda.is_available() |
检查 CUDA 是否可用。 |
torch.cuda.device_count() |
返回 CUDA 设备数量。 |
torch.cuda.current_device() |
返回当前 CUDA 设备索引。 |
torch.cuda.device(name) |
创建一个设备对象。 |
torch.cuda.device_context(device) |
创建设备上下文。 |
torch.device(device) |
创建一个设备对象(如 'cpu' 或 'cuda:0')。 |
torch.Tensor.to(device) |
将张量移动到指定设备。 |
torch.get_device_module(device_type) |
获取设备模块(如 cuda, mps)。 |
并行计算
| 函数 | 描述 |
|---|---|
torch.get_num_threads() |
获取用于 CPU 操作的总线程数。 |
torch.set_num_threads(int) |
设置用于 CPU 操作的线程数。 |
torch.get_num_interop_threads() |
获取 inter-op 并行线程数。 |
torch.set_num_interop_threads(int) |
设置 inter-op 并行线程数。 |
工具函数
| 函数 | 描述 |
|---|---|
torch.compiled_with_cxx11_abi() |
检查是否使用 C++11 ABI 编译。 |
torch.result_type(tensor, other) |
返回操作结果的 dtype。 |
torch.can_cast(from_dtype, to_dtype) |
检查是否可以转换数据类型。 |
torch.promote_types(type1, type2) |
返回提升后的数据类型。 |
torch.use_deterministic_algorithms(mode, warn_only) |
启用/禁用确定性算法。 |
torch.are_deterministic_algorithms_enabled() |
检查是否启用确定性算法。 |
torch.is_deterministic_algorithms_warn_only_enabled() |
检查确定性算法是否为警告模式。 |
torch.set_deterministic_debug_mode(debug_mode) |
设置确定性调试模式。 |
torch.get_deterministic_debug_mode() |
获取确定性调试模式。 |
torch.set_float32_matmul_precision(precision) |
设置 float32 矩阵乘法的精度。 |
torch.get_float32_matmul_precision() |
获取 float32 矩阵乘法的精度。 |
torch.set_warn_always(enabled) |
设置是否始终显示警告。 |
torch.is_warn_always_enabled() |
检查是否始终显示警告。 |
torch.vmap(fn, in_dims, out_dims, randomness, chunk_size) |
向量化映射。 |
torch._assert(condition, message) |
断言检查(内部使用)。 |
torch.typename(t) |
返回类型的字符串表示。 |
编译优化
| 函数 | 描述 |
|---|---|
torch.compile(model, backend, options, dynamic) |
编译 PyTorch 模型进行优化。 |
实例
实例
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)
# 矩阵运算
a = torch.randn(3, 4)
b = torch.randn(4, 5)
c = torch.matmul(a, b)
print(c.shape)
# 梯度计算
x = torch.tensor([1., 2., 3.], requires_grad=True)
y = x.sum()
y.backward()
print(x.grad)
# 创建张量
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)
# 矩阵运算
a = torch.randn(3, 4)
b = torch.randn(4, 5)
c = torch.matmul(a, b)
print(c.shape)
# 梯度计算
x = torch.tensor([1., 2., 3.], requires_grad=True)
y = x.sum()
y.backward()
print(x.grad)
输出结果:
tensor([2, 3, 4]) tensor([2, 3])
如果需要更详细的信息,可以参考 PyTorch 官方文档。
