一、基础环境搭建:Anaconda + PyTorch

1.1 Anaconda 安装与虚拟环境配置

(1)Anaconda 安装
  • 下载地址:Anaconda 官网,选择对应系统(Windows/macOS/Linux)版本,无脑下一步安装(建议勾选 “Add Anaconda to PATH”,方便终端调用)。

  • 验证安装:终端输入 conda --version,输出版本号即安装成功。

(2)虚拟环境配置(核心:隔离不同项目依赖)
# 1. 创建虚拟环境(命名为pytorch_env,指定Python版本3.9)
conda create -n pytorch_env python=3.9

# 2. 激活环境(Windows)
conda activate pytorch_env
# 激活环境(macOS/Linux)
source activate pytorch_env

# 3. 退出环境(无需使用时)
conda deactivate

# 4. 查看已创建环境
conda info --envs

1.2 PyTorch安装:CPU/GPU版本选择

(1)版本选择原则
  • CPU版本:无NVIDIA显卡、仅学习基础语法 → 安装简单,无需配置 CUDA。

  • GPU版本:有NVIDIA显卡(需满足CUDA算力要求) → 运算速度提升10倍以上,需先确认显卡驱动支持的 CUDA 版本。

(2)安装命令(激活虚拟环境后执行)
  • 查看 PyTorch 官方命令:PyTorch 官网,选择对应系统 / 包管理器 / 版本。

        CPU 版本(通用):

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

        GPU 版本(以 CUDA 11.8 为例):

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
(3)安装验证
import torch

# 验证PyTorch是否安装成功
print(torch.__version__)

# 验证GPU是否可用(返回True则GPU版本生效)
print(torch.cuda.is_available())

二、核心基础:什么是张量(Tensor)?

可直接理解:

张量是PyTorch中用于存储和处理数据的核心数据结构,是NumPy数组的 “深度学习增强版”

  • 从维度上看:

    • 0 维张量 = 标量(如 5)

    • 1 维张量 = 向量(如 [1,2,3])

    • 2 维张量 = 矩阵(如 [[1,2],[3,4]])

    • 3 维及以上 = 高维张量(如 RGB 图片:[高度,宽度,通道数])

  • 核心价值:相比 NumPy 数组,张量专为深度学习设计,支持GPU加速、自动求导等关键功能。

三、核心:PyTorch张量(Tensor)操作

3.1 张量与NumPy数组的核心区别

特性 PyTorch张量 NumPy数组
计算场景 支持GPU加速 仅CPU计算
自动求导 内置autograd机制 无自动求导功能
分布式计算 支持 不支持
核心用途 深度学习模型训练 数据处理、科学计算

3.2 张量创建(对比NumPy)

import torch
import numpy as np

# 1. 从列表创建
tensor1 = torch.tensor([1, 2, 3])
numpy1 = np.array([1, 2, 3])

# 2. 创建全0/全1张量
tensor2 = torch.zeros((2, 3))  # 2行3列全0张量
numpy2 = np.zeros((2, 3))

# 3. 创建随机张量(0-1均匀分布)
tensor3 = torch.rand((2, 3))
numpy3 = np.random.rand(2, 3)

# 4. 创建单位张量(对角为1)
tensor4 = torch.eye(3)  # 3x3单位矩阵
numpy4 = np.eye(3)

3.3 张量与NumPy数组的类型转换

(1)张量 → NumPy数组
tensor = torch.tensor([1, 2, 3])
numpy_arr = tensor.numpy()  # 转换后共享内存(张量修改,数组也会变)
# 不想共享内存时用这行(避免意外修改)
numpy_arr = tensor.cpu().detach().numpy()
(2)NumPy数组 → 张量
numpy_arr = np.array([1, 2, 3])
tensor = torch.from_numpy(numpy_arr)  # 共享内存
# 不共享内存(更安全)
tensor = torch.tensor(numpy_arr)

3.4 张量形状操作(reshape/view/squeeze)

(1)reshape:修改形状(兼容所有场景)
tensor = torch.rand(4, 6)  # 4行6列,总元素24个
# 改为3行8列
tensor_reshape = tensor.reshape(3, 8)
# 自动计算维度(-1表示自适应,新手高频用法)
tensor_reshape2 = tensor.reshape(-1, 8)  # 等价于(3,8)
tensor_reshape3 = tensor.reshape(2, -1)  # 等价于(2,12)
(2)view:修改形状(仅适用于连续内存的张量)
tensor = torch.rand(4, 6)
tensor_view = tensor.view(3, 8)  # 功能与reshape类似,但要求张量内存连续
# 提示:优先用reshape,避免view的内存报错
(3)squeeze/unsqueeze:压缩 / 扩展维度
# squeeze:删除维度为1的轴(新手常见:去除多余维度)
tensor = torch.rand(1, 2, 1, 3)  # 形状:(1,2,1,3)
tensor_squeeze = tensor.squeeze()  # 压缩后:(2,3)
tensor_squeeze2 = tensor.squeeze(0)  # 仅删除第0个维度:(2,1,3)

# unsqueeze:添加维度为1的轴(新手常见:适配模型输入)
tensor = torch.rand(2, 3)  # 形状:(2,3)
tensor_unsqueeze = tensor.unsqueeze(1)  # 添加第1个维度:(2,1,3)

四、实战对比:张量与 NumPy 数组运算

# 1. 基本运算(语法几乎一致)
tensor = torch.tensor([1, 2, 3])
numpy_arr = np.array([1, 2, 3])

print(tensor + 2)  # 张量加法:tensor([3, 4, 5])
print(numpy_arr + 2)  # 数组加法:[3 4 5]

# 2. GPU加速演示(张量独有的核心优势)
if torch.cuda.is_available():
    tensor_gpu = tensor.to("cuda")  # 张量移到GPU
    print(tensor_gpu + 2)  # GPU上运算,输出:tensor([3, 4, 5], device='cuda:0')

总结

  1. 基础认知:张量是PyTorch的核心数据结构,是支持GPU / 自动求导的 “增强版NumPy数组”,维度对应标量 / 向量 / 矩阵 / 高维数据。

  2. 环境搭建:Anaconda虚拟环境隔离依赖,PyTorch安装后用torch.cuda.is_available()验证 GPU版本是否生效。

  3. 核心操作:张量与NumPy转换时注意内存共享问题;形状操作优先用reshape,squeeze/unsqueeze用于调整维度适配模型。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐