神经网络
由多层参数化变换和非线性激活组成的可学习函数。
学习目标
- 画出前馈网络
- 追踪层间形状
- 区分隐藏层和输出层
为什么需要这个概念
单个神经元能力有限,多层结构通过表示学习处理图像、文本和复杂非线性。
- 建立深度学习整体结构
- 理解层、参数和表示
学习前需要掌握
背景与问题
单个神经元能力有限,多层结构通过表示学习处理图像、文本和复杂非线性。
概念定义
神经网络把输入依次送过隐藏层和输出层,前层形成基础表示,后层组合成任务特征。
直观理解
每一层把上一层的表示重新编码,逐步从原始数值形成更抽象特征。
核心原理
Linear 与非线性必须交替;连续线性层仍等价于一个线性变换。
网络容量取决于深度、宽度和结构,但容量更大不保证更容易训练或更能泛化。
数学表达
核心公式
l 是层编号,h 是该层表示。
变量含义
h^(l)第 l 层输出表示W^(l)第 l 层权重矩阵
计算步骤
- 1Linear(10,32)→[8,32]
- 2ReLU→[8,32]
- 3Linear(32,4)→[8,4]
代码对应位置
示例 1神经网络 · PyTorch 示例:验证神经网络的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
h^(l) | 第 l 层输出表示 |
W^(l) | 第 l 层权重矩阵 |
完整数值示例
两层形状
已知条件
- 输入 [8,10]
- 隐藏宽度 32
- 类别数 4
- 1
Linear(10,32)→[8,32]
- 2
ReLU→[8,32]
- 3
Linear(32,4)→[8,4]
输出 4 类 logits
处理前后对比
计算与实现步骤
- 1
定义输入输出
- 2
声明子层
- 3
实现 forward
- 4
随机输入检查
- 5
选择损失并训练
代码实现
示例 1
神经网络 · PyTorch 示例
example_01.py用途:验证神经网络的输入、计算和输出。
from torch import nn
model=nn.Sequential(nn.Linear(10,32),nn.ReLU(),nn.Linear(32,4))
print(model(torch.randn(8,10)).shape)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证神经网络的输入、计算和输出。
model- 组合预处理和估计器的模型对象。
Step 1 · 1–3 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
from torch import nn
model=nn.Sequential(nn.Linear(10,32),nn.ReLU(),nn.Linear(32,4))
print(model(torch.randn(8,10)).shape)预期输出或运行结果
torch.Size([8,4])。
常见错误 · 4 条
- 层多即效果好
- 输出层激活错误
- 不检查形状
- 确认样本轴、特征轴以及 X 与 y 的第一维完全对应。
实际应用
- 分类
- 回归
- 表示学习
常见错误
文档来源
02_神经网络的训练与优化原始文档
学习资料/deeplearning/02_神经网络的训练与优化.md- §1 神经网络怎样学习
- §2 前向传播
常见问题
网络为什么要有隐藏层?
用于学习中间表示与非线性组合。
深度越大越好吗?
不一定,还受优化、数据和泛化限制。
推荐学习资料
Dive into Deep Learning
把数学、图示、文字与可执行代码结合,系统覆盖深度学习基础和现代模型。
Zhang / Lipton / Li / Smola · D2L.ai
资料笔记
Practical Deep Learning for Coders
以项目驱动方式学习视觉、NLP、表格模型、协同过滤和模型部署。
Jeremy Howard · fast.ai
资料笔记
Deep Learning
系统讲解线性代数、优化、前馈网络、正则化、卷积、序列模型与研究主题。
Goodfellow / Bengio / Courville · DeepLearningBook.org
资料笔记
MIT Introduction to Deep Learning
以密集讲座和实验介绍神经网络、序列模型、生成模型和深度学习应用。
MIT 6.S191 Team · MIT
资料笔记
TensorFlow Playground
在浏览器中调整特征、隐藏层、激活函数和学习率,观察分类边界变化。
TensorFlow Team · TensorFlow