news 2026/4/3 6:20: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/3/27 22:57:16

智慧大棚环境调控算法响应速度测试报告

‌1. 测试背景与重要性‌ 随着智能农业的快速发展,智慧大棚已成为现代农业的核心设施。环境调控算法(如温湿度控制、光照调节)的响应速度直接影响作物生长效率和资源利用率。作为软件测试从业者,您需要确保这些算法在真实场景中及…

作者头像 李华
网站建设 2026/4/1 23:23:03

基于BJT的甲类放大电路设计完整示例

从零构建一个高保真前置放大器:深入剖析基于BJT的甲类放大电路设计你有没有遇到过这样的情况?明明按照手册搭好了晶体管放大电路,结果输出波形严重失真,或者静态电流一上电就“飙”到饱和——这几乎是每个初学者都会踩的坑。问题往…

作者头像 李华
网站建设 2026/3/15 8:03:47

深蓝词库转换终极指南:从零开始的完整使用教程

深蓝词库转换终极指南:从零开始的完整使用教程 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 作为一款开源免费的输入法词库转换程序,深蓝词…

作者头像 李华
网站建设 2026/3/31 18:23:07

ViGEmBus虚拟控制器驱动完整指南:从零基础到精通掌握

ViGEmBus虚拟控制器驱动完整指南:从零基础到精通掌握 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus虚拟控制器驱动是一款革命性的Wind…

作者头像 李华
网站建设 2026/4/2 5:32:02

5个实战技巧突破抖音直播间数据采集瓶颈

5个实战技巧突破抖音直播间数据采集瓶颈 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 当你尝试从抖音直播间获取用户互动数据时&…

作者头像 李华
网站建设 2026/4/1 22:13:20

组合逻辑电路设计入门必看:基础编码器构建步骤

从零开始构建一个4线-2线编码器:组合逻辑设计实战指南你有没有想过,键盘上每一个按键按下时,计算机是如何“知道”是哪一个键的?背后其实藏着一个简单却精妙的数字电路——编码器。它能把多个输入信号压缩成一组紧凑的二进制码&am…

作者头像 李华