《深度学习框架实战对比》——写给完全零基础的初学者
开篇:什么是深度学习框架?它能做什么?

你可能听说过“人工智能”、“机器学习”或者“深度学习”这些词。它们听起来很高深,但其实并不难理解。
简单来说,深度学习是一种让计算机“自己学习”的技术,它可以识别图像、听懂语音、甚至会写文章!比如我们手机上的面部识别、智能语音助手、短视频推荐系统,背后都有深度学习的支持。
而深度学习框架(Deep Learning Framework),就是帮助我们快速构建和训练深度学习模型的一套工具包。就像你做蛋糕不需要从磨面粉开始,而是用现成的烘焙工具一样,深度学习框架提供了很多预设的功能,让我们可以专注在解决问题上。
目前最主流的深度学习框架有:
- TensorFlow
- PyTorch
- Keras
本教程将通过一个实际项目,带你亲手体验这三个框架的基本使用,并教你如何选择适合自己的那一个。
环境准备:搭建你的深度学习开发环境

无论你要学哪个框架,第一步是准备好编程环境。以下是详细的步骤:
1. 安装 Python
如果你还没安装 Python,请先去官网下载安装:https://www.python.org/
推荐使用 Python 3.8~3.10 版本,兼容性较好。
安装完成后,在命令行输入以下命令确认是否成功:
python --version
2. 安装 pip 包管理器
pip 是用来安装各种 Python 工具的,一般安装 Python 的时候已经自带了。你可以用下面这个命令查看:
pip --version
3. 安装三个主要框架
安装 TensorFlow:
pip install tensorflow
安装 PyTorch:
建议到 https://pytorch.org/get-started/locally/ 页面,根据你的操作系统和是否支持 GPU 选择对应的安装命令。
常见的命令如下:
pip install torch torchvision torchaudio
安装 Keras:
Keras 实际上现在已经是集成在 TensorFlow 中的一个模块。所以我们可以这样安装:
pip install keras
也可以直接使用 TensorFlow 内置版本,无需额外安装。
4. 推荐安装 Jupyter Notebook 或 Colab
Jupyter Notebook 是一种非常适合新手练习代码的交互式编程环境。安装方法如下:
pip install jupyter
然后运行:
jupyter notebook
你也可以使用 Google 提供的免费在线环境 Google Colab(网址:https://colab.research.google.com/),它已经内置了大多数深度学习库,不用自己安装。
核心概念:一文看懂深度学习的关键术语

刚接触深度学习的时候,是不是经常听到一些专业词汇,比如“神经网络”、“损失函数”、“优化器”等等?别担心,下面我们就用最通俗的语言解释这些概念。
1. 模型(Model)
模型就像大脑,是用来做判断或预测的。例如识别图片是猫还是狗的程序,它的核心就是一个“图像分类模型”。
2. 数据集(Dataset)
训练模型需要用到大量数据,这些数据就叫做数据集。比如我们想教电脑识别猫的照片,就要提供很多猫和非猫的图片作为训练数据。
3. 输入(Input)与输出(Output)
- 输入:比如一张图片、一句话等;
- 输出:模型处理后得出的结果,比如这张图片是不是猫。
4. 层(Layer)
层就像是模型的零件。不同功能的层组合起来,就能组成完整的“大脑”。常见的层包括:
- 全连接层(Dense Layer)
- 卷积层(Convolutional Layer)
- 池化层(Pooling Layer)
5. 损失函数(Loss Function)
模型训练过程中,我们需要知道它做得好不好。损失函数就是评价标准,数值越小说明模型越准确。
6. 优化器(Optimizer)
优化器的作用是告诉模型:你应该怎么调整参数来提高正确率。常见的优化器有 SGD、Adam 等。
7. 过拟合(Overfitting) vs 欠拟合(Underfitting)
- 过拟合:模型记住了训练的数据,但在新数据上表现差。
- 欠拟合:模型没学好,对训练数据和新数据都表现不好。
实战项目:用三种框架分别完成“手写数字识别”项目
我们将用最经典的数据集之一——MNIST手写数字数据集,来比较三个框架的使用方式。
这个数据集包含28x28像素的手写数字图片,目标是训练一个模型来识别每张图中的数字(0~9)。
我们会分别展示:
- Keras(基于TensorFlow)实现
- PyTorch实现
- 纯TensorFlow实现
所有代码都可以在 Jupyter Notebook 或 Google Colab 上直接运行!
一、Keras 实现(推荐入门首选)
Keras 的特点是简洁易用,适合新手。
from tensorflow import keras
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.optimizers import RMSprop
# 加载数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 预处理
x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
# 转换为one-hot编码
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
# 构建模型
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))
# 编译模型
model.compile(loss='categorical_crossentropy',
optimizer=RMSprop(),
metrics=['accuracy'])
# 训练模型
history = model.fit(x_train, y_train,
batch_size=128,
epochs=5,
validation_split=0.2)
# 评估模型
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
✅ 优点:
- 代码简洁,逻辑清晰
- 非常适合初学者
二、PyTorch 实现
PyTorch 更灵活,适合深入研究算法内部结构。
import torch
from torch import nn, optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
# 数据预处理
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
# 构建模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(28*28, 512)
self.fc2 = nn.Linear(512, 512)
self.fc3 = nn.Linear(512, 10)
self.dropout = nn.Dropout(0.2)
def forward(self, x):
x = x.view(-1, 28*28)
x = torch.relu(self.fc1(x))
x = self.dropout(x)
x = torch.relu(self.fc2(x))
x = self.dropout(x)
x = self.fc3(x)
return x
model = Net()
# 损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练模型
for epoch in range(5): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(train_loader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
print(f'Epoch {epoch+1}, Loss: {running_loss / len(train_loader)}')
# 测试模型
correct = 0
total = 0
with torch.no_grad():
for data in test_loader:
images, labels = data
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print(f'Accuracy of the network on the 10000 test images: {100 * correct / total}%')
✅ 优点:
- 更接近底层控制,适合调试算法细节
- 动态计算图,更直观
三、原生 TensorFlow 实现
TensorFlow 更强调性能优化和生产级部署。
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras import layers, models, losses, optimizers, metrics
# 加载数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 28*28).astype("float32") / 255.0
x_test = x_test.reshape(-1, 28*28).astype("float32") / 255.0
# 构建模型
model = models.Sequential([
layers.Dense(512, activation="relu", input_shape=(784,)),
layers.Dropout(0.2),
layers.Dense(512, activation="relu"),
layers.Dropout(0.2),
layers.Dense(10)
])
# 编译模型
model.compile(
optimizer=optimizers.Adam(learning_rate=0.001),
loss=losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[metrics.SparseCategoricalAccuracy()]
)
# 训练模型
model.fit(x_train, y_train, epochs=5, validation_split=0.1)
# 评估模型
model.evaluate(x_test, y_test)
✅ 优点:
- 原生 TensorFlow 支持分布式训练、部署等功能
- 和 TensorFlow.js、TF Lite 结合紧密,适合工程部署
新手常见问题解答
1. 我应该先学哪个框架?
✅ 推荐 Keras 或 PyTorch 入门:
- 如果你是完全零基础,推荐从 Keras 开始,因为它简单、高效;
- 如果你想从事研究工作或了解模型结构,建议学习 PyTorch。
2. 需要学习数学知识吗?
当然,像线性代数、微积分这些基础知识是有帮助的,但是作为入门者,你可以先动手实践,在实践中慢慢补充理论知识。
3. 没有 GPU 也能跑深度学习模型吗?
可以的。对于简单的任务,CPU 也够用,只是速度慢一点。你可以在 Google Colab 中免费申请 GPU 使用时间。
4. 学完这个项目下一步该怎么做?
继续进阶可以从以下方向入手:
- 图像分类 → 图像分割 → 自然语言处理(NLP)
- 学习卷积神经网络(CNN)、循环神经网络(RNN)
- 试试用真实数据集做项目(如 Kaggle)
5. 总是遇到依赖报错怎么办?
可以尝试使用虚拟环境(如 venv 或 conda)隔离项目环境,避免互相干扰。
学习建议:下一步该怎么走?
✅ 初级阶段(0-3个月):
- 熟悉 Python 基础语法
- 学会使用 NumPy、Matplotlib 等基础科学计算库
- 掌握基本的机器学习概念
- 完成 MNIST 等基础项目
✅ 中级阶段(3-6个月):
- 掌握 CNN、RNN 等网络结构
- 尝试图像分类、文本分类等项目
- 学会调参和模型优化技巧
- 学习使用 TensorBoard 查看训练效果
✅ 高级阶段(6个月以上):
- 深入研究论文和前沿模型(如 Transformer)
- 参加 Kaggle 比赛
- 尝试部署模型(Flask + TensorFlow Serving / ONNX)
- 向 AI 工程师或研究员方向发展
结语:深度学习没有想象中那么难
深度学习是一个强大又有趣的领域。虽然刚开始会觉得有点挑战,但只要坚持动手实践,每天进步一点点,很快你就会发现:“原来我也能做出 AI 应用了!”
希望这篇教程能为你打开深度学习的大门。记住一句话:最好的学习方法,就是去做。
🎯 课后练习:
- 修改上述模型中的层数或激活函数,看看是否会影响精度
- 把 Dropout 设置改为 0.5,观察训练过程变化
- 在 PyTorch 代码中加入打印 loss 的频率,比如每 100 个批次打印一次
欢迎你在评论区留言交流,有任何问题也欢迎提问,我们一起成长!

评论 0