理解神经网络流程
个人记录 2025 10 3
神经网络流程
数据的预处理 通过dataset和dataloader进行
dataset 处理数据旋转裁切调整对比度等操作 将数据修改成张量的格式 就像numpy 用array格式,pandas用的是dataframe格式
dataloader 处理数据如果批次大小和加载数量,因为他不像机器学习可以把数据一次性读进来。
前向传播 样本特征输入后进行预测,通过损失函数中参数权重偏置进行链式求导法则得到梯度,用梯度下降法更新参数
循环 最终使得梯度平稳停止。
神经网络核心流程梳理(dbai总结版)
一、数据预处理:给模型“备齐能用的料”
- 核心目的:把原始数据(图、文等)变成模型能“消化”且训练效果好的形式
- Dataset:干“数据加工”的活
- 先优化数据:做旋转、裁切、调对比度,让模型见多识广(提升泛化能力)
- 再统一格式:把加工好的数据转成张量(Tensor),比NumPy的Array多了GPU加速功能
- DataLoader:干“按需上菜”的活
- 分批拆数据:按设好的Batch Size拆分,解决“数据太多装不下内存”的问题
- 按次给数据:训练时每次只送一批,贴合神经网络的训练节奏
二、核心训练循环:模型“慢慢学”的关键步骤
1. 前向传播:把DataLoader给的一批数据喂进模型,经过卷积、全连接这些层计算后,得出预测结果
2. 算损失:用交叉熵、MSE这类损失函数,比一比预测结果和真实答案差多少,得出误差(损失值)
3. 反向传播:根据损失值,用链式求导法则从后往前算,找出每个参数(权重、偏置)对误差的影响(梯度)
4. 更参数:让SGD、Adam这些优化器照着梯度,用梯度下降法调整参数,争取下一轮误差能变小
三、训练停止:判断模型“学好了”的标准
- 看损失:损失值不怎么降了,稳定在一个区间里
- 看梯度:参数的梯度快接近0了,再调参数也没多大提升空间
- 看轮次:训练到了提前设好的Epoch数,就停下
为什么要收敛,如何收敛,如何快速收敛
要将梯度值控制在0-1的范围内防止梯度消失和梯度爆炸等问题
通过反向传播进行循环计算损失函数的权重和偏置来得到梯度,再用梯度下降来解决
使用优秀的优化器比如adam自适应距估计和sgd随机梯度下降,通常使用adam