PyTorch入门指南:环境配置与张量初探
一、为什么选择PyTorch?
PyTorch是由Facebook开源的深度学习框架,凭借动态计算图、直观的API设计和强大的GPU加速,已成为学术界和工业界的主流工具。
与TensorFlow相比,PyTorch更适合快速原型开发,且与Python生态无缝集成,是新手入门深度学习的理想选择。
二、环境配置(Windows/macOS/Linux)
1. 安装Python
- 推荐使用 Python 3.8~3.10(PyTorch对高版本支持可能滞后)。
- 通过Miniconda管理环境(避免全局安装冲突):
# 创建虚拟环境
conda create -n pytorch_env python=3.8
conda activate pytorch_env
2. 安装PyTorch
- 无NVIDIA显卡:安装CPU版本
conda install pytorch torchvision torchaudio cpuonly -c pytorch
- 有NVIDIA显卡:安装CUDA版本(需提前安装CUDA Toolkit)
# 以CUDA 11.3为例(需根据显卡驱动版本选择)
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
3. 验证安装
import torch
print(torch.__version__) # 输出PyTorch版本,如1.12.1
print(torch.cuda.is_available()) # 输出True表示GPU可用
三、张量(Tensor)基础操作
1. 什么是张量?
张量是PyTorch中的核心数据结构,可理解为多维数组:
- 标量(0维张量):
torch.tensor(3.0)
- 向量(1维张量):
torch.tensor([1, 2, 3])
- 矩阵(2维张量):
torch.tensor([[1, 2], [3, 4]])
2. 创建张量的5种方式
# 方法1:直接创建
a = torch.tensor([5, 3], dtype=torch.float32)
# 方法2:从NumPy转换(共享内存)
import numpy as np
arr = np.array([1, 2, 3])
b = torch.from_numpy(arr)
# 方法3:初始化全零/全一张量
c = torch.zeros(2, 3) # 2行3列
d = torch.ones_like(c) # 与c形状相同
# 方法4:随机初始化(重要!神经网络常用)
e = torch.rand(3, 3) # 均匀分布 U(0,1)
f = torch.randn(3, 3) # 标准正态分布 N(0,1)
g = torch.randint(0, 10, (2, 2)) # 0~9的整数
# 方法5:等差数列
h = torch.arange(0, 10, 2) # [0, 2, 4, 6, 8]
3. 张量的关键属性
tensor = torch.randn(2, 3, device="cuda")
print(tensor.shape) # 形状:torch.Size([2, 3])
print(tensor.dtype) # 数据类型:torch.float32
print(tensor.device) # 设备:cuda:0(GPU)
四、张量的设备管理(CPU/GPU)
1. 将张量移动到GPU
if torch.cuda.is_available():
device = torch.device("cuda") # 默认GPU
tensor = tensor.to(device) # 转移数据
tensor = tensor.to("cuda:0") # 指定多GPU中的第一块
2. 从GPU取回数据
cpu_tensor = tensor.cpu() # 移回CPU
numpy_array = cpu_tensor.numpy() # 转换为NumPy
五、张量操作实战:实现线性变换
案例:计算 y = Wx + b
# 生成数据
x = torch.tensor([2.0, 3.0]) # 输入向量
W = torch.randn(2, 2, requires_grad=True) # 权重矩阵(需计算梯度)
b = torch.ones(2, requires_grad=True) # 偏置
# 计算输出
y = torch.matmul(W, x) + b # 等价于 W @ x + b
print("Output:", y)
关键操作说明
requires_grad=True
:标记需要自动求导的变量(后续文章详解)torch.matmul()
:矩阵乘法,比torch.mm()
更通用
六、常见问题与解决方法
Q1:安装时提示CUDA版本不兼容
- 检查显卡驱动支持的CUDA版本:
nvidia-smi
(Windows/Linux) - 根据驱动版本选择PyTorch的CUDA版本(官方兼容表)
Q2:张量形状不匹配如何排查?
# 使用.shape或.size()检查维度
print(x.shape) # 输出torch.Size()
print(W.shape) # 应为torch.Size([2, 2])
七、小结
本文完成了PyTorch环境配置、张量基础操作和设备管理,并实现了一个简单的线性变换。关键知识点总结:
- 使用Conda隔离环境,根据硬件选择PyTorch版本
- 张量是PyTorch的核心数据结构,支持多种创建方式
- 通过
.to(device)
管理CPU/GPU数据迁移
下篇预告:在第二篇文章中,我们将深入探讨PyTorch的自动求导(Autograd)机制,并实现梯度下降算法优化线性回归模型!