news 2026/5/1 10:33:32

3层神经网络:从原理到代码实现的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3层神经网络:从原理到代码实现的完整指南

3层神经网络:从原理到代码实现的完整指南

深度学习的核心组件——神经网络,今天我们就来手把手实现一个3层神经网络。无论你是刚入门的小白,还是想巩固基础的开发者,这篇指南都会让你有所收获!

神经网络结构解析

首先来看我们的网络架构:

输入层(2个神经元)→ 隐藏层1(3个神经元)→ 隐藏层2(2个神经元)→ 输出层(2个神经元)

这就是典型的全连接前馈神经网络。每一层的神经元都与下一层的所有神经元相连。

符号系统详解

神经网络有一套标准的符号表示法:

  • w12(1)w_{12}^{(1)}w12(1):表示从第1层第2个神经元第2层第1个神经元的权重
  • a1(1)a_1^{(1)}a1(1):表示第1层第1个神经元的加权输入(含偏置)
  • 右上角数字表示层数,右下角两个数字表示“目标层神经元索引, 来源层神经元索引”

信号传递的数学原理

第一层计算:从输入到隐藏层

对于第1层的第一个神经元,其计算过程为:
a1(1)=w11(1)x1+w12(1)x2+b1(1)a^{(1)}_{1} = w^{(1)}_{11}x_{1} + w^{(1)}_{12}x_{2} + b^{(1)}_{1}a1(1)=w11(1)x1+w12(1)x2+b1(1)

但这样逐个计算太繁琐了!聪明的做法是用矩阵运算打包处理:

A(1)=XW(1)+B(1)\boldsymbol{A}^{(1)} = \boldsymbol{X}\boldsymbol{W}^{(1)} + \boldsymbol{B}^{(1)}A(1)=XW(1)+B(1)

其中:

  • X=(x1x2)\boldsymbol{X} = \begin{pmatrix} x_1 & x_2 \end{pmatrix}X=(x1x2)(输入)
  • W(1)=(w11(1)w21(1)w31(1)w12(1)w22(1)w32(1))\boldsymbol{W}^{(1)} = \begin{pmatrix} w_{11}^{(1)} & w_{21}^{(1)} & w_{31}^{(1)} \\ w_{12}^{(1)} & w_{22}^{(1)} & w_{32}^{(1)} \end{pmatrix}W(1)=(w11(1)w12(1)w21(1)w22(1)w31(1)w32(1))(权重矩阵)
  • B(1)=(b1(1)b2(1)b3(1))\boldsymbol{B}^{(1)} = \begin{pmatrix} b_1^{(1)} & b_2^{(1)} & b_3^{(1)} \end{pmatrix}B(1)=(b1(1)b2(1)b3(1))(偏置)

Python实现:一步步构建神经网络

第一步:初始化网络参数

importnumpyasnpdefsigmoid(x):"""Sigmoid激活函数"""return1/(1+np.exp(-x))definit_network():"""初始化神经网络权重和偏置"""network={}network['W1']=np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]])network['b1']=np.array([0.1,0.2,0.3])network['W2']=np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]])network['b2']=np.array([0.1,0.2])network['W3']=np.array([[0.1,0.3],[0.2,0.4]])network['b3']=np.array([0.1,0.2])returnnetwork

第二步:前向传播实现

defidentity_function(x):"""恒等函数(输出层激活函数)"""returnxdefforward(network,x):"""前向传播"""W1,W2,W3=network['W1'],network['W2'],network['W3']b1,b2,b3=network['b1'],network['b2'],network['b3']# 第1层计算a1=np.dot(x,W1)+b1# 加权和z1=sigmoid(a1)# 激活函数# 第2层计算a2=np.dot(z1,W2)+b2 z2=sigmoid(a2)# 输出层计算a3=np.dot(z2,W3)+b3 y=identity_function(a3)# 恒等激活returny

第三步:运行神经网络

# 初始化网络network=init_network()# 准备输入数据x=np.array([1.0,0.5])# 前向传播得到输出y=forward(network,x)print(f"神经网络输出:{y}")# [0.31682708 0.69627909]

关键知识点总结

1. 矩阵运算的高效性

  • np.dot()一次性完成整层的加权和计算
  • 避免低效的循环操作
  • NumPy的向量化运算大幅提升性能

2. 激活函数的选择

  • 隐藏层:常用sigmoid、ReLU等非线性函数
  • 输出层:根据任务类型选择
    • 回归问题 → 恒等函数
    • 二分类 → sigmoid函数
    • 多分类 → softmax函数

3. 网络参数的组织

  • 权重W:连接两层神经元的参数矩阵
  • 偏置b:每个神经元的偏移量
  • 层与层之间完全连接

为什么这样设计?

模块化设计

  • init_network():负责参数初始化
  • forward():负责信号前向传播
  • 结构清晰,易于扩展

可扩展性

  • 增加网络层数只需简单扩展
  • 更换激活函数不影响整体结构
  • 方便后续添加反向传播算法

实际应用场景

这样的3层神经网络可用于:

  • 回归预测:房价预测、股票趋势分析
  • 二分类问题:垃圾邮件识别、疾病诊断
  • 模式识别:简单图像分类、特征提取

扩展思考

  1. 如果我想增加网络深度怎么办?

    • 只需在init_network中添加更多W和b
    • 在forward中添加对应的计算层
  2. 如果想使用不同的激活函数

    • 只需修改z1 = sigmoid(a1)为其他函数
    • 如ReLU:z1 = np.maximum(0, a1)
  3. 如何训练这个网络

    • 需要添加损失函数计算误差
    • 实现反向传播算法更新权重
    • 使用优化器(如SGD、Adam)调整学习过程

结语

通过这个简单的3层神经网络实现,我们看到了深度学习的基本构建模块。虽然这个网络还无法解决复杂问题,但它包含了所有核心概念:

✅ 前向传播 ✅ 激活函数 ✅ 矩阵运算 ✅ 参数组织

掌握了这些基础,你就为学习更复杂的网络架构(如CNN、RNN)打下了坚实的基础!

实践建议:尝试修改网络结构(如增加神经元数量),观察输出变化;或者用真实数据集替换我们的示例数据,看看网络的表现如何。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:20:25

抖音直播匿名用户数据处理:从技术原理到实战应用

抖音直播匿名用户数据处理:从技术原理到实战应用 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 在抖音直播间数据采集过程…

作者头像 李华
网站建设 2026/5/1 5:52:32

小米运动智能步数同步2026完整指南:轻松占领微信支付宝排行榜

小米运动智能步数同步2026完整指南:轻松占领微信支付宝排行榜 【免费下载链接】mimotion 小米运动刷步数(微信支付宝)支持邮箱登录 项目地址: https://gitcode.com/gh_mirrors/mimo/mimotion 每天看着微信运动排行榜上朋友们遥遥领先的…

作者头像 李华
网站建设 2026/5/1 6:45:53

输入法词库自由迁移:深蓝转换工具快速上手完整指南

输入法词库自由迁移:深蓝转换工具快速上手完整指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 一、价值定位:为什么你需要这款词库转换神…

作者头像 李华
网站建设 2026/5/1 7:49:45

低功耗场景下的BJT放大电路设计策略

如何让“老派”的BJT在微瓦级功耗下依然大放异彩?你有没有遇到过这样的困境:传感器信号只有几毫伏,噪声却无处不在,而供电只有一颗3V纽扣电池,系统总功耗还不能超过200μW?在这种严苛条件下,很多…

作者头像 李华
网站建设 2026/5/1 6:44:22

ViGEmBus虚拟控制器驱动终极指南:5分钟快速上手完整教程

ViGEmBus虚拟控制器驱动终极指南:5分钟快速上手完整教程 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款革命性的Windows内核模式…

作者头像 李华
网站建设 2026/5/1 10:00:07

使用Logisim仿真触发器电路:图形化学习好帮手

图形化学数字电路:用Logisim玩转触发器你有没有过这样的经历?在课本上反复看D触发器的真值表,盯着“上升沿有效”这几个字发呆,却始终想象不出它到底是怎么“记住”一个信号的。或者,在脑海中努力构建JK触发器的状态跳…

作者头像 李华