很多准备入行 AI 的朋友,第一个纠结的问题往往不是算法,而是:“我到底该学 PyTorch 还是 TensorFlow?”
这个问题在 CSDN、知乎、GitHub 上被反复讨论,但大部分回答都停留在“PyTorch 动态图好用、TensorFlow 适合部署”这种层面。真正让人困惑的是:你问搞科研的同学,他推荐 PyTorch;你问做大厂后端服务的工程师,他说 TensorFlow 在工业界更成熟;你再问一个刚转行的朋友,他可能已经在这两个框架之间反复横跳了两个月,连环境都没配好。
这篇文章不是简单给你一个“选 A 还是选 B”的结论,而是把两件事讲透:第一,2026 年这个时间节点上,PyTorch 和 TensorFlow 的真实生态格局是什么;第二,如果你决定从 PyTorch 入手,怎样用最短时间把环境搭好、把核心概念跑通、并完成一个真正能落地的入门项目。
先说我的判断:如果你是刚转 AI、准备搞科研、或者想快速上手深度学习的新人,2026 年首选 PyTorch 基本没有悬念。TensorFlow 仍然在很多企业级场景中存在,但它已经不是新手入局的最佳选择。这个判断不是情绪,而是过去几年间的生态变化、论文代码分布、招聘岗位要求和社区活跃度共同指向的结果。接下来,我会用数据、场景和实操一步步说清楚。
1. PyTorch 与 TensorFlow 的真实差距在哪里
很多人以为 PyTorch 和 TensorFlow 只是两个 API 不同的深度学习框架,选哪个只是个人习惯问题。但实际上,它们的差别已经深入到设计哲学、生态布局和社区文化层面。
先看一组不能忽略的事实。从 2020 年开始,顶会论文(NeurIPS、ICML、CVPR、ACL 等)中,使用 PyTorch 的论文比例持续攀升,到 2024 年已经占据绝对多数。原因很直接:PyTorch 的动态计算图让研究者可以像写普通 Python 代码一样调试神经网络,这对快速迭代实验来说是致命的效率优势。TensorFlow 早期主推的静态图模式,虽然有利于性能优化和部署,但对研究者来说思维负担太重。
再看 GitHub 上的开源项目。HuggingFace Transformers 是目前 AI 社区最重要的模型库之一,它最早以 PyTorch 为主,后来才兼容 TensorFlow。Stable Diffusion、LLaMA、ChatGLM 等影响力的开源模型,官方实现几乎都是 PyTorch。这意味着什么?意味着你如果想读源码、改模型、做微调,PyTorch 是默认语言。你绕不开它。
这不是说 TensorFlow 不行。TensorFlow 在 TensorFlow Serving、TensorFlow Lite、TFX 等部署工具链上依然有完整性,很多企业的推荐系统、CV 服务、移动端推理仍在使用 TensorFlow。但从趋势看,PyTorch 也在通过 TorchServe、torch.compile、ONNX 导出等能力补足部署短板,同时 TensorFlow 的新用户增长已经明显放缓。
这里要做一个负责任的提醒:如果你所在的公司或团队已经有成熟的技术栈和项目积累,不要因为“PyTorch 更流行”就贸然推翻现有架构。技术选型要尊重现有的工程约束。但如果你是个人学习者、刚起步的团队、或者没有任何历史包袱的新项目,PyTorch 是更顺手的入场券。
2. 为什么 PyTorch 更适合 2026 年的 AI 新手
选框架不只是看谁强大,还要看谁更适合你当前阶段的学习曲线。PyTorch 对新手友好的背后,有一个经常被忽略的设计逻辑:它把“张量计算”和“自动求导”做成了两个非常干净的抽象,你在写 PyTorch 代码时,本质上是在写 Python,而不是在学一套新语言。
初学者最容易感受到的差异,是调试体验。在 TensorFlow 1.x 时代,你需要先定义完整计算图,再通过Session运行,中间出错时很难定位。PyTorch 采用的是动态图机制,代码执行到哪一步,计算图就构建到哪一步,你可以随时print张量的形状和数值,也可以用 Python 自带的pdb或 IDE 断点整个训练过程。这种原生的 Python 调试体验,极大降低了入门的心理门槛。
还有一个实际好处:PyTorch 的报错信息越来越友好。早期框架报错经常让人摸不着头脑,但 PyTorch 2.x 系列在错误提示上做了大量改进,会直接告诉你是维度不匹配、数据类型不一致,还是梯度计算出了问题。对于新手来说,这节省了大量的排错时间。
下面做一个简单对比,方便你有一个总体印象:
| 维度 | PyTorch | TensorFlow |
|---|---|---|
| 计算图模式 | 动态图为主,调试直观 | 动态图(Eager)与静态图并存,早期以静态图为主 |
| 论文与开源模型 | 占据绝对主导 | 占比持续下降 |
| 学习曲线 | 平缓,贴近 Python 直觉 | 相对陡峭,概念更多 |
| 部署生态 | TorchServe、ONNX、LibTorch | TensorFlow Serving、TFLite、TFX |
| 社区活跃度 | 高,迭代快 | 稳定,但新内容增速放缓 |
| 适合场景 | 科研、快速原型、大模型微调 | 企业存量系统、移动端/嵌入式、规模化生产 |
这个表格不是让你直接照搬结论。更稳妥的判断是:如果你做研究、做原型、做微调、做教学,PyTorch 几乎一定是更优解;如果你在企业做长期维护的生产系统,或者你的业务强依赖移动端/嵌入式推理,TensorFlow 依然值得了解。
3. 三小时入门计划与学习路径规划
既然决定了方向,接下来就要解决“怎么学”的问题。很多人的失败不是因为不够努力,而是因为规划太散。今天看一篇文章、明天跑一段代码、后天又去研究虚拟环境,结果一周过去连 MNIST 都没跑通。
我建议你把 PyTorch 入门压缩成三个小时的定点突破,只做四件事:
第一件事,用半小时解决环境问题。创建一个干净的 Python 虚拟环境,装好 PyTorch CPU 版或 GPU 版,确认import torch不报错。
第二件事,用四十五分钟掌握两个核心抽象:torch.Tensor和torch.autograd。理解张量的创建、运算、形状变换,以及requires_grad和反向传播的关系。
第三件事,用一个小时跑通一个完整模型。从数据加载到模型定义,再到训练循环和评估,把每个环节的代码都亲手敲一遍。
第四件事,用四十五分钟做一个总结。把训练过程中的组件按“数据 → 模型 → 损失 → 优化 → 循环”梳理成自己的知识框架,然后把代码保存到 GitHub。
下面按这个节奏,把每个环节的实操步骤讲清楚。这里以 PyTorch 2.x 系列为例,具体版本以你安装时的官方最新稳定版为准,但代码思路是通用的。
4. PyTorch 环境搭建与基础配置
搭建 PyTorch 环境是很多人第一次被劝退的地方。其实只要抓住两个关键点,整个过程非常机械:第一,用虚拟环境隔离项目依赖;第二,根据自己有没有 NVIDIA 显卡,选择正确的安装命令。
首先创建虚拟环境。这里以conda为例,如果你没有安装 Anaconda 或 Miniconda,建议先装 Miniconda,体积小、够用:
conda create -n pytorch-beginner python=3.10 conda activate pytorch-beginnerPython 版本建议选择 3.10 或 3.11。太老的版本可能不支持新版 PyTorch,太新的版本有时候第三方库还没有完全适配。用 3.10 一般最稳妥。
然后安装 PyTorch。PyTorch 官方提供了一套环境检测工具,访问 PyTorch 官网的安装页面,选择你的操作系统、包管理器(pip 或 conda)和 CUDA 版本,官网会自动生成对应的安装命令。这里给出两种最常见的情况。
如果你有 NVIDIA 显卡,且 CUDA 环境已经装好,可以执行类似下面的命令:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121如果你暂时没有独立显卡,或者只是先学习基础语法,安装 CPU 版本就够了:
pip install torch torchvision torchaudio值得注意的是,PyTorch 2.6 开始改进了torch.load的默认参数,weights_only设为True成为新默认值。这和安全相关,如果你在加载别人给的模型权重时遇到兼容性问题,可以在确认来源可信的前提下,显式传入weights_only=False。但从安全角度,不建议在加载不可信文件时关闭这个保护。
安装完成后,验证是否成功:
python -c "import torch; print(torch.__version__)"如果输出类似2.6.0+cu121,说明安装成功。如果你的电脑支持 GPU,还可以再验证一下 CUDA 是否可用:
python -c "import torch; print(torch.cuda.is_available())"输出True表示 GPU 可用。如果输出False,不要急,说明 PyTorch 没有检测到 CUDA,可能是驱动问题、CUDA 版本不匹配,或者你安装的是 CPU 版本。这一步只需要确保 CPU 版本能跑就行了,GPU 加速可以在后面再配置。
这里要特别说明一个新手常犯的错误:一上来就纠结“我必须安装 GPU 版本”。如果你的电脑没有 NVIDIA 显卡,或者你用的是 Mac,强行配置 GPU 只会浪费时间。CPU 版本足以支撑入门阶段所有代码,只有在训练较大模型时,GPU 的优势才会明显体现。
5. PyTorch 核心概念:从张量到自动求导
环境准备好之后,下一步是理解 PyTorch 最核心的两个抽象概念:张量(Tensor)和自动求导(autograd)。这两个概念解决了神经网络中两个最基本的问题:数据用什么表示,以及梯度怎么算。
张量可以理解为“支持 GPU 加速的多维数组”,它是 PyTorch 中最基础的数据结构。相比 Python 自带的列表或 NumPy 数组,张量不仅支持多维存储,还能被自动求导机制追踪。
下面用一段示例代码演示张量的常见操作:
import torch # 创建不同形状的张量 a = torch.tensor([1, 2, 3]) b = torch.ones(2, 3) c = torch.randn(3, 3) print("a:", a) print("b:", b) print("c:", c) # 形状变换 d = c.view(9) print("d:", d) # 把 3x3 展平成 9 个元素 # 设备移动:CPU 与 GPU 互转 print("c.device:", c.device) if torch.cuda.is_available(): c_gpu = c.cuda() print("c_gpu.device:", c_gpu.device)这段代码展示了张量创建、打印、形状变换和设备移动。view是一个高频操作,在把图片数据从二维展平为一维、或调整特征图尺寸时经常用到。device属性表示张量当前所在的内存位置。
再看自动求导。神经网络训练的本质,是计算损失函数对每个参数的梯度,然后沿着梯度下降的方向更新参数。PyTorch 的autograd机制让这个过程完全自动化。你只需要把需要求梯度的张量设置requires_grad=True,然后正常做运算,最后调用.backward(),梯度就会被自动计算出来。
import torch # 创建一个需要梯度的张量 x = torch.tensor([2.0], requires_grad=True) # 定义运算 y = x^2 + 3x + 1 y = x ** 2 + 3 * x + 1 # 反向传播,自动计算梯度 y.backward() # 查看梯度:dy/dx = 2x + 3,当 x=2 时导数为 7 print("x.grad:", x.grad)这段代码演示了自动求导的核心用法。y.backward()会从y出发,沿着运算路径反向计算每个参与运算且requires_grad=True的张量的梯度。最终x.grad保存的就是偏导数。
理解这两个概念后,深度学习模型的训练流程就有了根基:
- 数据以张量形式输入模型。
- 模型参数也是张量,且设置了
requires_grad=True。 - 前向传播得到预测结果,计算损失。
- 调用
loss.backward()得到梯度。 - 优化器根据梯度更新参数。
- 循环上述过程直到损失收敛。
6. 三小时极速入门:完整示例代码与训练流程
现在进入最核心的部分:用 PyTorch 在 CPU 上跑通一个完整的分类模型。这里选用经典的 MNIST 手写数字识别数据集,它足够简单,数据量适中,非常适合作为第一个完整程序。
为了让你看清楚每一步,下面拆分成四个文件。不要跳过任何一个,即使代码看起来“太简单”,亲手敲一遍和只看一遍的差别非常大。
6.1 加载数据
创建文件data_loader.py:
import torch from torch.utils.data import DataLoader from torchvision import datasets, transforms def get_mnist_loaders(batch_size=64): # 定义数据预处理:转为张量并归一化到 [0, 1] transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) # 下载训练集和测试集 train_dataset = datasets.MNIST( root="./data", train=True, download=True, transform=transform ) test_dataset = datasets.MNIST( root="./data", train=False, download=True, transform=transform ) # 用 DataLoader 按批次加载数据 train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) return train_loader, test_loader这里要注意transform的作用。ToTensor()把 PIL 图片或 NumPy 数组转为形状为(C, H, W)的张量,并把像素值从 0-255 缩放到 0-1。Normalize再用均值和标准差做标准化,这可以让模型训练更稳定。MNIST 数据集的全局均值和标准差就是0.1307和0.3081,这是公开数据集的标准配置。
6.2 定义模型
创建文件model.py:
import torch.nn as nn import torch.nn.functional as F class SimpleNN(nn.Module): def __init__(self): super(SimpleNN, self).__init__() # 输入是 28x28=784,输出是 10 个类别 self.fc1 = nn.Linear(784, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): # 输入形状: [batch_size, 1, 28, 28],先展平为 [batch_size, 784] x = x.view(x.size(0), -1) x = F.relu(self.fc1(x)) x = self.fc2(x) return x定义 PyTorch 模型的标准做法是继承nn.Module,在__init__里定义网络层,在forward里定义前向传播逻辑。这个简单网络只有两个全连接层,参数总量很小,在 CPU 上几十秒就能训练完,但已经足够让你理解模型定义的关键套路。
6.3 训练与评估
创建文件train.py:
import torch import torch.nn as nn from model import SimpleNN from data_loader import get_mnist_loaders def train_one_epoch(model, train_loader, criterion, optimizer, device): model.train() total_loss = 0 correct = 0 total = 0 for images, labels in train_loader: images, labels = images.to(device), labels.to(device) optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() total_loss += loss.item() _, predicted = outputs.max(1) total += labels.size(0) correct += predicted.eq(labels).sum().item() avg_loss = total_loss / len(train_loader) accuracy = 100.0 * correct / total return avg_loss, accuracy def evaluate(model, test_loader, criterion, device): model.eval() total_loss = 0 correct = 0 total = 0 with torch.no_grad(): for images, labels in test_loader: images, labels = images.to(device), labels.to(device) outputs = model(images) loss = criterion(outputs, labels) total_loss += loss.item() _, predicted = outputs.max(1) total += labels.size(0) correct += predicted.eq(labels).sum().item() avg_loss = total_loss / len(test_loader) accuracy = 100.0 * correct / total return avg_loss, accuracy def main(): device = torch.device("cuda" if torch.cuda.is_available() else "cpu") train_loader, test_loader = get_mnist_loaders(batch_size=64) model = SimpleNN().to(device) criterion = nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) epochs = 3 for epoch in range(1, epochs + 1): train_loss, train_acc = train_one_epoch( model, train_loader, criterion, optimizer, device ) test_loss, test_acc = evaluate(model, test_loader, criterion, device) print(f"Epoch {epoch}: " f"Train Loss={train_loss:.4f}, Train Acc={train_acc:.2f}%, " f"Test Loss={test_loss:.4f}, Test Acc={test_acc:.2f}%") if __name__ == "__main__": main()这段代码包含了一个完整的训练流程,重点看train_one_epoch中的五个关键步骤:
optimizer.zero_grad():清空上一个批次的梯度。这一步不能漏掉,否则梯度会累加。outputs = model(images):前向传播,得到预测结果。loss = criterion(outputs, labels):计算损失。loss.backward():反向传播,计算梯度。optimizer.step():更新模型参数。
model.train()和model.eval()的切换也很重要。虽然当前模型没有 Dropout 和 BatchNorm 层,影响不大,但养成切换习惯可以避免后续使用复杂模型时踩坑。另外,评估阶段用torch.no_grad()包裹,可以关闭梯度计算,节省内存并加速。
6.4 运行与验证
在项目根目录下执行:
python train.py第一次运行会自动下载 MNIST 数据集,大概需要几十秒到几分钟,取决于网络。如果下载失败,可以手动从公开数据集下载地址下载后放到./data/MNIST/raw/目录。
正常输出类似:
Epoch 1: Train Loss=0.2984, Train Acc=91.23%, Test Loss=0.1532, Test Acc=95.50% Epoch 2: Train Loss=0.1217, Train Acc=96.32%, Test Loss=0.0931, Test Acc=97.18% Epoch 3: Train Loss=0.0812, Train Acc=97.48%, Test Loss=0.0784, Test Acc=97.64%这组结果是合理的。一个简单的两层全连接网络在 MNIST 上跑出 97% 以上的准确率很正常,这也是 MNIST 太“简单”的原因。如果数字差别不大,但整体趋势是损失下降、准确率上升,就说明训练成功。如果你发现准确率卡在 10% 附近,大概率是某一步代码写错了,尤其是model.train()和model.eval()的位置,或者梯度清零被漏掉。
7. 看完训练结果后,下一步应该做什么
跑通 MNIST 之后,你会进入一个常见的迷茫期:懂了流程,但感觉这些代码离真实项目还很远。这是正常的。MNIST 的定位是“语法练习题”,它让你理解框架的骨架,但真正的 AI 能力是在更复杂的任务上练出来的。
我的建议是按照下面路线做三个升级:
第一个升级是换数据集。把 MNIST 换成 CIFAR-10,这是一个 32x32 的彩色图片数据集,包含飞机、汽车、鸟等 10 个类别。你会发现原来的两层全连接网络效果会大幅下降,因为 CIFAR-10 没有 MNIST 那么容易,这时候你会主动去学卷积神经网络(CNN)。用torch.nn.Conv2d、torch.nn.MaxPool2d搭建一个简单的 CNN,是理解计算机视觉的关键一步。
第二个升级是换任务类型。从图像分类换到文本分类,比如用torch.nn.Embedding加LSTM或Transformer做情感分析。这一步会帮助你理解自然语言处理中数据是如何表示和处理的,也会接触到torchtext或 HuggingFace 的datasets库。
第三个升级是吃透一个开源项目。去 GitHub 上找一个 PyTorch 实现的经典模型,比如 ResNet 或一个小型 GPT 实现,试着改结构、改超参数、加打印看中间层输出。读代码的能力和写代码的能力一样重要,尤其是当你准备求职或做科研时,能快速读懂别人的代码是一个核心技能。
这三个升级完成之后,你对 PyTorch 的认识就能从“会跑 MNIST”提升到“能上手真实任务”的水平。
8. PyTorch 与 TensorFlow 的职业发展分析
聊完技术入门,回到一个更实际的问题:这两个框架的选择,对未来求职到底有什么影响?很多人担心选错方向浪费了几个月,这种焦虑完全理解,但结论可能比你想的更简单。
先看岗位要求。打开主流招聘平台的 AI 算法工程师岗位描述,你会发现一个现象:绝大多数岗位写的是“熟悉 PyTorch 或 TensorFlow”。也就是说,这两个框架在招聘方眼中通常视为等价技能,没有哪个公司会因为你只会 PyTorch 而拒绝你。但如果岗位涉及大模型(LLM)的预训练、微调或推理优化,PyTorch 几乎是硬性要求,因为主流大模型开源实现都跑在 PyTorch 上。
再看职业方向。如果你的目标是高校科研、算法岗、大模型应用开发、或者 AI 创业,PyTorch 是最高优先级。它的动态图特性和开源模型生态,能让你快速验证想法、复现论文、基于开源模型二次开发。如果你关注的是移动端推理、嵌入式部署、或者传统企业级 AI 平台的运维,TensorFlow 的存量市场依然存在机会,但新增需求在减少。
还有一点值得注意:框架本身正在变得“透明”。现在的开发范式越来越倾向于用 PyTorch Lightning、HuggingFace Transformers、DeepSpeed 这类上层工具,开发者在写业务代码时已经很少直接操作底层框架。这意味着,决定你职业竞争力的,不是你会哪个框架,而是你对模型原理、训练技巧、数据处理和工程部署的整体理解。框架只是一个载体,把核心原理吃透,换框架的成本远比你想象的低。
给一个比较明确的结论:2026 年选择 PyTorch 作为入门的性价比更高。如果你的公司或导师明确要求 TensorFlow,那当然要尊重项目需求;如果没有人替你决定,直接pip install torch开跑就行,不必纠结。
9. 常见问题与排查方法
新手在安装和使用 PyTorch 时,会遇到一些频率非常高的问题。这里整理了一张排查表,建议收藏:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
import torch报错 | 安装不完整或版本冲突 | 查看完整报错堆栈 | 重建虚拟环境,按官方命令重装 |
torch.cuda.is_available()返回 False | 安装的是 CPU 版,或 CUDA 版本不匹配 | 检查torch.__version__是否带+cu | 按 GPU 版本命令重新安装,确认驱动可用 |
训练时报CUDA out of memory | 显存不足 | 查看 GPU 占用 | 调小 batch_size,使用torch.cuda.empty_cache() |
| 加载模型权重报错 | PyTorch 2.6 后weights_only默认值为 True | 查看报错信息确认加载来源 | 对可信文件显式传入weights_only=False |
| 数据集下载超时 | 网络问题 | 查看终端日志 | 手动下载数据集放到本地目录 |
| 验证集准确率一直很低 | 模型没切换 eval 模式,或梯度没清零 | 检查model.eval()和optimizer.zero_grad() | 补齐关键代码后重新训练 |
写代码的每一步都要养成看错误信息的习惯。PyTorch 的报错在 2.x 版本中已经非常友好,错误信息里通常会包含“Expected shape ... but got ...”或者“Expected scalar type ... but found ...”这类明确提示。拿到报错先读最后一行,大多数问题都能在报错本身里找到答案。
10. 最佳实践与工程建议
很多教程讲完代码就结束了,但真实项目中还有一类“看不见的规范”决定了你的开发体验。这里补充几条实际工程中非常宝贵的经验。
第一,永远使用虚拟环境。不要为了省事直接在系统 Python 里装 PyTorch。不同项目的依赖会互相冲突,尤其是numpy、torch、torchvision的版本组合非常敏感。一个项目一套虚拟环境,是成本最低的保险。
第二,固定关键依赖版本。在项目根目录维护一份requirements.txt,把torch==2.x.x、torchvision==x.x.x固定下来。这样无论是换电脑还是团队协作,都能保证环境可复现。GPU 版本还需要记录 CUDA 版本,因为torch的安装命令和 CUDA 版本强相关。
第三,训练脚本要加命令行参数。不要把所有超参数写死在代码里。用argparse或click接收--batch_size、--lr、--epochs等参数,这会在你做实验对比时省下大量时间。
第四,养成保存和加载模型的习惯。每训练完一个 epoch,把模型权重保存到磁盘:
# 保存模型权重 torch.save(model.state_dict(), "mnist_model.pth") # 加载模型权重 model = SimpleNN() model.load_state_dict(torch.load("mnist_model.pth", weights_only=True)) model.eval()关于 PyTorch 2.6 之后的weights_only变化,再强调一次:这是 PyTorch 官方从安全角度出发的改动,weights_only=True可以阻止在加载文件时执行任意代码。从可信来源加载模型时,如果你确定文件完整性,可以显式设置weights_only=False,但平时遇到加载报错不要第一时间关闭这个保护,先确认文件来源。这一条在真实项目中非常重要。
第五,日志和可视化不能省。可以从matplotlib画出训练损失曲线开始,后续可以考虑接入 TensorBoard 或 Weights & Biases。不要只盯着控制台输出的数字,趋势图能看到训练是否稳定、是否过拟合,这一步的工程价值远超想象。
11. 总结与后续学习方向
最后做一个小结。这篇文章的核心观点是:2026 年选择深度学习框架,PyTorch 是新手性价比更高的起点。从论文生态、开源模型、学习曲线和招聘要求四个维度来看,PyTorch 都占据了明确的优势。TensorFlow 并不会消失,但它的角色更像存量生产系统维护者,而不是新手的首选。
三小时入门路径总结如下:
- 第 30 分钟:创建虚拟环境,安装 PyTorch,验证版本。
- 第 30 分钟:跑通张量创建、形状变换、自动求导示例。
- 第 60 分钟:完成 MNIST 数字识别从数据加载到训练评估的全流程。
- 第 60 分钟:梳理组件框架,保存代码,尝试调整超参数观察效果。
下一步值得深入的方向,按优先级排列:用 CNN 重新解决 MNIST 和 CIFAR-10 分类;搞懂Dataset和DataLoader的自定义实现;学习使用 HuggingFace Transformers 加载预训练模型做微调;最后,选一个你感兴趣的方向,用 PyTorch 实现一个完整的开源项目。这四个方向走完,你的 PyTorch 已经从入门走向实战了。
框架选择只是一个起点,真正的竞争力来自你对模型原理、数据处理和工程稳定性的综合理解。选好方向,先把环境跑起来,然后开始你的第一个项目。