news 2026/8/11 8:52:52

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/8/7 11:07:58

3步极速配置:轻松搭建Firefox自动化测试环境

3步极速配置:轻松搭建Firefox自动化测试环境 【免费下载链接】geckodriver WebDriver for Firefox 项目地址: https://gitcode.com/gh_mirrors/ge/geckodriver 还在为Firefox自动化测试环境配置而烦恼吗?作为WebDriver for Firefox的核心组件&…

作者头像 李华
网站建设 2026/7/31 21:01:14

‌新兴元宇宙:虚拟社交平台并发用户压力测试分析

元宇宙虚拟社交的并发挑战‌ 随着2026年元宇宙技术的爆发式增长,虚拟社交平台(如Meta Horizon或Decentraland)已成为用户交互的核心场景。这些平台支持数千至百万用户同时在线,进行实时社交、交易和活动,但高并发负载…

作者头像 李华
网站建设 2026/7/31 20:25:41

深入浅出ARM7:从零开始学习内存管理单元原理

深入浅出ARM7:从零揭开内存管理的底层逻辑你有没有遇到过这样的情况——程序跑着跑着突然“死机”,查了半天发现是某个任务误写了中断向量表?或者在移植一个轻量级RTOS时,明明代码逻辑没问题,却频繁触发数据中止异常&a…

作者头像 李华
网站建设 2026/7/31 23:16:00

电感封装磁屏蔽特性在选型中的作用:认知型解读

电感封装的磁屏蔽设计:为什么一个“小包裹”能决定系统EMC成败?你有没有遇到过这样的情况——电路原理图完全照着参考设计画,电源芯片选的是主流型号,输入输出电容也都按规格书配齐了,结果一上电测试,ADC采…

作者头像 李华
网站建设 2026/8/6 18:42:53

MTKClient Live DVD V6刷机工具:避坑指南与实战操作

MTKClient Live DVD V6刷机工具:避坑指南与实战操作 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 作为一名MTK设备刷机爱好者,你是否在使用MTKClient Live DVD V6…

作者头像 李华
网站建设 2026/8/10 23:06:58

抖音直播数据采集工具:3大核心策略突破匿名用户识别瓶颈

抖音直播数据采集工具:3大核心策略突破匿名用户识别瓶颈 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 抖音直播间数据采…

作者头像 李华