【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】3.32 用NumPy实现简单的前馈神经网络
3.32 用NumPy实现简单的前馈神经网络
3.32.1 文章目录
3.32.2 前馈神经网络的基本概念
3.32.2.1 什么是前馈神经网络
前馈神经网络(Feedforward Neural Network, FNN)是一种无反馈的多层神经网络,其中每一层的神经元只接收前一层的输入,并将输出传递给下一层。数据在神经网络中按照前向传播的方式流动,从输入层到输出层,不包含反馈路径。这种结构使其适用于解决多种监督学习问题,如分类和回归。
3.32.2.2 网络结构和工作原理
3.32.2.2.1 网络结构
前馈神经网络通常由输入层、隐藏层和输出层组成。每一层包含多个神经元,神经元之间通过权重连接。输入层接收输入数据,隐藏层进行特征提取,输出层输出最终结果。隐藏层的数量和每个隐藏层的神经元数量可以根据具体问题进行调整。
3.32.2.2.2 前向传播
前向传播是指输入数据从输入层传递到输出层的过程。每一步骤可以表示为:
z ( l ) = W ( l ) a ( l − 1 ) + b ( l ) z^{(l)} = W^{(l)} a^{(l-1)} + b^{(l)} z(l)=W(l)a(l−1)+b(l)
a ( l ) = σ ( z ( l ) ) a^{(l)} = \sigma(z^{(l)}) a(l)=σ(z(l))
其中, z ( l ) z^{(l)} z(l) 是第 l l l 层的线性组合, W ( l ) W^{(l)} W(l) 是第 l l l 层的权重矩阵, a ( l − 1 ) a^{(l-1)} a(l−1) 是第 l − 1 l-1 l−1 层的激活输出, b ( l ) b^{(l)} b(l) 是第 l l l 层的偏置向量, σ \sigma σ 是激活函数。
3.32.2.2.3 激活函数
激活函数用于引入非线性,使神经网络能够学习复杂的特征。常用的激活函数有Sigmoid、ReLU、Tanh等。本篇文章将以Sigmoid激活函数为例:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
3.32.3 使用NumPy实现前馈神经网络的步骤
3.32.3.1 初始化网络参数
初始化网络参数是构建神经网络的第一步。我们需要为每一层的权重和偏置设置初始值。权重通常使用随机值初始化,偏置则初始化为零。
3.32.3.1.1 代码实现
import numpy as np
# 定义网络层的大小
input_size = 2 # 输入层大小
hidden_size = 3 # 隐藏层大小
output_size = 1 # 输出层大小
# 初始化权重和偏置
np.random.seed(0) # 设置随机种子,确保每次运行结果一致
W1 = np.random.randn(input_size, hidden_size) # 输入层到隐藏层的权重矩阵
b1 = np.zeros((1, hidden_size)) # 输入层到隐藏层的偏置向量
W2 = np.random.randn(hidden_size
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)