深度学习入门零基础笔记|Python+理论+PyTorch实战
深度学习入门零基础笔记|Python+理论+PyTorch实战
标签:深度学习入门、PyTorch基础、机器学习理论、零基础自学笔记、AI入门
简介:本文整合 Python 基础、神经网络核心理论、PyTorch 框架实操三大板块,从零搭建完整知识体系。所有代码带详细注释,知识点扎实全面、可直接运行,适合零基础学习者筑牢根基,为后续 CV、NLP、大模型学习铺路。
目录
- 前言
- 第一部分 Python 深度学习必备基础
- 第二部分 神经网络核心理论精讲
- 第三部分 PyTorch 框架完整入门实操
- 第四部分 模型训练通用标准流程
- 第五部分 入门常见问题与避坑总结
- 优质配套学习资源推荐
一、前言
深度学习入门讲究 先基础、再理论、后代码,跳过基础直接上手模型极易出现概念模糊、代码报错、看不懂网络结构等问题。
二、第一部分 Python 深度学习必备基础
2.1 Python 语言定位与核心特点
Python 是深度学习唯一主流开发语言,PyTorch、TensorFlow、OpenCV 等框架均以 Python 为前端接口。
- 解释型语言,无需编译,编写即运行
- 动态类型变量,无需提前声明数据类型
- 语法简洁优雅,缩进划分代码块
- 海量科学计算、可视化、AI 第三方库
2.2 基础数据类型与变量
2.2.1 常用基础类型
# 整型:整数
int_num = 10
# 浮点型:小数
float_num = 3.14
# 字符串:文本
str_text = "AI学习"
# 布尔型:True/False
bool_flag = False
2.2.2 强制类型转换
# 字符串转整数
int("666")
# 字符串转浮点数
float("9.9")
# 数字转字符串
str(123)
# 数字转布尔值(0为False,非0为True)
bool(0)
2.3 四大容器类型(深度学习高频使用)
列表 list(最常用)
有序可变数组,支持增删改查,存放批量数据
# 定义列表
lst = [1, 2, 3, "深度学习"]
# 末尾添加元素
lst.append(5)
# 修改第0个位置的值
lst[0] = 99
# 删除第1个位置的元素
del lst[1]
元组 tuple
有序不可变,用于固定数据
# 定义元组,元素不能修改
tup = (10, 20, 30)
字典 dict
键值对结构,存储映射关系
# 键:值 形式
dic = {"name": "模型", "lr": 0.001}
集合 set
自动去重,用于数据去重与集合运算
# 重复元素会自动合并
s = {1, 2, 2, 3}
2.4 流程控制语句
条件判断
score = 88
# 如果分数大于等于90
if score >= 90:
print("优秀")
# 否则如果大于等于60
elif score >= 60:
print("及格")
# 其他情况
else:
print("不及格")
循环语句
# for 循环:循环 5 次
for i in range(5):
print(i)
# while 循环:条件满足就循环
n = 0
while n < 3:
n += 1 # 每次+1
控制关键字
break:终止整个循环continue:跳过本次循环pass:占位,不执行任何操作
2.5 函数与面向对象基础
自定义函数
封装重复代码,简化调用
# 定义加法函数
def add(a, b):
return a + b # 返回结果
# 调用函数
res = add(2, 3)
类与对象
网络模型、数据集均基于类封装
# 定义一个网络类
class Net:
# 初始化方法
def __init__(self):
self.name = "基础网络" # 属性
# 前向传播方法(占位)
def forward(self):
pass
2.6 深度学习两大核心第三方库
2.6.1 NumPy 数值计算库
多维数组运算,PyTorch 张量底层原型
# 导入numpy库
import numpy as np
# 创建二维数组
arr = np.array([[1, 2], [3, 4]])
# 查看形状(行,列)
print(arr.shape)
# 数组求和
print(arr.sum())
2.6.2 Matplotlib 可视化库
绘制损失曲线、图像、数据分布图
# 导入绘图库
import matplotlib.pyplot as plt
# 生成0-10之间的50个点
x = np.linspace(0, 10, 50)
# 计算正弦值
y = np.sin(x)
# 绘图
plt.plot(x, y)
# 显示图片
plt.show()
三、第二部分 神经网络核心理论精讲
3.1 神经网络整体结构
基础三层结构:输入层 → 隐藏层 → 输出层
- 输入层:接收原始图像、文本、表格数据
- 隐藏层:多层特征提取、非线性变换
- 输出层:输出分类类别、回归预测数值
深度学习 = 多层堆叠神经网络,依靠多层变换拟合现实复杂规律。
3.2 张量 Tensor 核心基础
3.2.1 张量层级划分
张量是深度学习统一数据载体,本质是多维数组:
- 0 维张量:标量,单个数字
- 1 维张量:向量,一维数组
- 2 维张量:矩阵,二维数组
- 3 维及以上:高阶张量,图像、批量数据
3.2.2 张量四大核心属性
- shape:维度形状,判断数据结构
- dtype:数据类型,浮点/整型
- device:存储设备,CPU/GPU
- requires_grad:是否开启梯度计算,用于模型训练
3.3 前向传播 Forward
数据从输入层单向传递至输出层,得到预测结果。
通用计算流程
- 输入数据进入网络
- 加权求和:Z=XW+bZ=XW+bZ=XW+b
- 激活函数非线性处理
- 逐层传递,最终输出预测值
单层隐藏层公式
Z1=XW1+b1Z_1=XW_1+b_1Z1=XW1+b1
A1=f(Z1)A_1=f(Z_1)A1=f(Z1)
Z2=A1W2+b2Z_2=A_1W_2+b_2Z2=A1W2+b2
y^=g(Z2)\hat y=g(Z_2)y^=g(Z2)
核心作用:生成预测结果,为计算损失提供依据。
3.4 反向传播 Backward
模型学习的核心机制,误差反向传递更新参数。
完整流程
- 对比预测值与真实标签,计算损失
- 链式法则反向传导误差
- 求解权重、偏置梯度
- 梯度下降更新网络参数,降低整体损失
核心作用:让模型不断学习优化,提升预测准确度。
3.5 五大常用激活函数
作用:引入非线性,多层网络才可拟合复杂数据规律
| 激活函数 | 公式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Sigmoid | σ(x)=11+e−x\sigma(x)=\dfrac{1}{1+e^{-x}}σ(x)=1+e−x1 | 输出 0~1,表征概率 | 梯度消失、非零中心化 | 二分类输出层 |
| Tanh | tanh(x)=ex−e−xex+e−x\tanh(x)=\dfrac{e^x-e^{-x}}{e^x+e^{-x}}tanh(x)=ex+e−xex−e−x | 零中心化,收敛更快 | 梯度消失 | 浅层隐藏层 |
| ReLU | f(x)=max(0,x)f(x)=max(0,x)f(x)=max(0,x) | 计算简单、缓解梯度消失 | 神经元死亡 | 绝大多数隐藏层 |
| Leaky ReLU | f(x)=max(ax,x)f(x)=max(ax,x)f(x)=max(ax,x) | 解决神经元死亡 | 效果波动 | ReLU 优化替换 |
| Softmax | σ(zi)=ezi∑ezj\sigma(z_i)=\dfrac{e^{z_i}}{\sum e^{z_j}}σ(zi)=∑ezjezi | 输出概率和为 1 | 计算量大 | 多分类输出层 |
3.6 损失函数 Loss Function
衡量预测值和真实值差距,反向传播计算起点。
3.6.1 回归任务(预测连续数值)
- 均方误差 MSE:对异常值敏感,梯度平滑
L=1n∑(y^i−yi)2L=\dfrac{1}{n}\sum(\hat y_i-y_i)^2L=n1∑(y^i−yi)2 - 平均绝对误差 MAE:抗干扰性强
3.6.2 分类任务(预测离散类别)
- 二元交叉熵 BCE:搭配 Sigmoid 二分类
- 交叉熵 CrossEntropy:自带 Softmax,标准多分类损失
3.7 优化器 Optimizer
根据梯度更新参数,推动损失持续下降:
- SGD 随机梯度下降:基础算法,小批量训练最常用
- Momentum 动量梯度:加速收敛,减少震荡
- RMSprop:自适应学习率,适配复杂数据
- Adam:融合动量与自适应学习,入门首选优化器
3.8 机器学习基础分类
- 监督学习:带标签数据,回归、分类任务
- 无监督学习:无标签数据,聚类、降维
3.9 模型拟合与数据集划分
数据集划分比例
训练集 60%~70%、验证集 15%~20%、测试集 15%~20%
拟合问题
- 过拟合:训练效果极好,测试效果极差
解决:扩充数据、正则化、Dropout、提前停止训练 - 欠拟合:训练、测试效果均较差
解决:增加网络层数、提升模型复杂度
3.10 经典理论定理
- NFL 无免费午餐定理:不存在万能最优算法
- 偏差方差权衡:平衡拟合能力与泛化能力
- 评估指标
分类:准确率、精确率、召回率、F1、AUC
回归:MSE、RMSE、MAE、R2R^2R2
四、第三部分 PyTorch 框架完整入门实操
4.1 框架简介
PyTorch 动态图机制,调试简单、上手轻松,科研、工业项目通用主流框架。
4.2 环境安装命令
# CPU版本(清华源加速)
pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
# GPU版本(需安装CUDA)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
4.3 安装验证
# 导入torch
import torch
# 查看版本
print(torch.__version__)
# 查看GPU是否可用
print(torch.cuda.is_available())
4.4 张量创建与基础操作
import torch
# 从列表创建张量
t1 = torch.tensor([1, 2, 3])
# 创建2行3列全0张量
t2 = torch.zeros(2, 3)
# 创建3行3列随机张量
t3 = torch.rand(3, 3)
# numpy转张量
import numpy as np
arr = np.array([1, 2])
t4 = torch.from_numpy(arr)
# 改变形状
t1.reshape(3, 1)
# 转到CPU
t1.cpu()
# 转到GPU
t1.to("cuda")
4.5 Autograd 自动微分
无需手动求导,框架自动计算梯度
# 定义张量,开启梯度计算
x = torch.tensor(2.0, requires_grad=True)
# 构建计算图
y = x**2 + 3*x
# 反向传播,计算梯度
y.backward()
# 打印x的梯度
print(x.grad)
核心函数:
requires_grad=True:开启梯度backward():反向求导zero_grad():清空梯度
4.6 神经网络核心模块 nn.Module
4.6.1 常用网络层
import torch.nn as nn
# 线性层:输入10维,输出5维
linear = nn.Linear(10, 5)
# ReLU激活函数
relu = nn.ReLU()
# 交叉熵损失(多分类)
loss_fn = nn.CrossEntropyLoss()
# Adam优化器
opt = torch.optim.Adam(linear.parameters(), lr=0.001)
4.6.2 自定义网络模型
固定模板:初始化定义层 + forward 定义前向传播
import torch
import torch.nn as nn
# 定义简单网络,继承nn.Module
class SimpleNet(nn.Module):
# 初始化:输入维度、隐藏维度、输出维度
def __init__(self, in_dim, hid_dim, out_dim):
super().__init__() # 继承父类初始化
# 第一层线性层
self.fc1 = nn.Linear(in_dim, hid_dim)
# 激活函数
self.relu = nn.ReLU()
# 第二层线性层
self.fc2 = nn.Linear(hid_dim, out_dim)
# 前向传播
def forward(self, x):
x = self.relu(self.fc1(x)) # 第一层+激活
x = self.fc2(x) # 第二层
return x # 返回结果
# 创建模型实例
model = SimpleNet(10, 20, 2)
4.7 数据集加载 Dataset + DataLoader
from torch.utils.data import Dataset, DataLoader
# 自定义数据集类
class MyData(Dataset):
# 初始化:传入数据和标签
def __init__(self, data, label):
self.data = data
self.label = label
# 数据集长度
def __len__(self):
return len(self.data)
# 根据索引取数据
def __getitem__(self, idx):
return self.data[idx], self.label[idx]
# 构建数据集
dataset = MyData(x, y)
# 数据加载器:批次32,打乱顺序
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
五、第四部分 模型训练通用标准流程
这套模板所有深度学习项目都能直接套用!
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, Dataset
# ===================== 1. 构建数据集 =====================
class TrainData(Dataset):
def __init__(self):
# 随机生成1000个样本,每个样本10维
self.x = torch.randn(1000, 10)
# 随机生成0/1标签(二分类)
self.y = torch.randint(0, 2, (1000,))
# 数据集长度
def __len__(self):
return len(self.x)
# 根据索引取一组数据
def __getitem__(self, idx):
return self.x[idx], self.y[idx]
# 实例化数据集
train_data = TrainData()
# 构建加载器:批次32,打乱
train_loader = DataLoader(train_data, 32, True)
# ===================== 2. 搭建模型 =====================
class Net(nn.Module):
def __init__(self):
super().__init__()
# 快速搭建网络:线性层+激活+线性层
self.layer = nn.Sequential(
nn.Linear(10, 20), # 输入10 → 隐藏20
nn.ReLU(), # 激活
nn.Linear(20, 2) # 输出2分类
)
# 前向传播
def forward(self, x):
return self.layer(x)
# 实例化模型
model = Net()
# 损失函数:多分类交叉熵
loss_func = nn.CrossEntropyLoss()
# 优化器:Adam,学习率0.001
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
# ===================== 3. 开始训练 =====================
# 训练10轮
for epoch in range(10):
total_loss = 0 # 累计损失
# 遍历每一批数据
for data, label in train_loader:
optimizer.zero_grad() # 梯度清零(必须)
pred = model(data) # 前向传播,得到预测值
loss = loss_func(pred, label) # 计算损失
loss.backward() # 反向传播,计算梯度
optimizer.step() # 更新参数
total_loss += loss.item() # 累加损失
# 打印每轮平均损失
print(f"轮次 {epoch+1} 平均损失:{total_loss/len(train_loader):.4f}")
5.1 模型保存与加载
# 仅保存模型参数(推荐,体积小)
torch.save(model.state_dict(), "params.pth")
# 加载参数
model.load_state_dict(torch.load("params.pth"))
5.2 GPU 加速训练通用写法
# 自动判断是否使用GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 模型移到GPU/CPU
model = model.to(device)
# 每一批数据也移到设备
for data, label in train_loader:
data, label = data.to(device), label.to(device)
六、第五部分 入门常见问题与避坑总结
- 梯度不清零:模型无法收敛,训练必须写
zero_grad() - 数据与模型设备不统一:CPU → GPU 直接报错
- 激活函数乱用:多分类输出层必须用 Softmax
- 维度不匹配:输入维度与网络层必须对应
- 过拟合过早优化:先加数据,再用正则、Dropout
七、优质配套学习资源推荐
7.1 理论学习
- 吴恩达深度学习课程:零基础入门首选
- 周志华《机器学习》西瓜书:夯实底层理论
7.2 Python 基础
菜鸟教程 Python3:快速查阅语法,零基础速成
7.3 PyTorch 实操
- B 站小土堆 PyTorch 教程:手把手代码实操
- PyTorch 官方文档:权威 API 查询
文末总结
本篇笔记覆盖 Python 语法、机器学习理论、神经网络核心、PyTorch 代码实操、标准训练流程 四大入门核心板块。
所有代码均带逐行详细注释,逻辑连贯、可直接复制运行。
零基础学习者按照顺序逐段理解、动手敲写代码,完全吃透后即可具备:
- 简单网络搭建
- 标准模型训练
- 数据集处理
- 损失/优化器使用
- GPU 训练
无缝衔接 CNN、RNN、Transformer、大模型微调 等进阶内容,稳固打好深度学习入门根基。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)