使用numpy实现深度学习:4层全连接网络反向传播及Sigmoid应用

PDF格式 | 282KB | 更新于2024-08-30 | 74 浏览量 | 2 下载量 举报
收藏
在本篇文章中,我们将详细介绍如何使用Python和NumPy库来实现一个4层的全连接神经网络,用于解决二分类问题。这个网络具有以下特点: 1. **网络结构**: - 输入层有2个节点,代表两个特征。 - 隐藏层设计为25, 50, 25个节点,每层之间全连接,没有使用Dropout等正则化技术。 - 输出层有2个节点,每个节点对应一个类别(1或2),未采用Softmax函数,而是使用Sigmoid函数作为激活函数。 - 激活函数的选择:Sigmoid函数在此处用于每个节点的输出值范围在(0,1),方便后续的误差计算。 2. **误差计算**: - 使用均方误差(Mean Squared Error, MSE)作为损失函数,而非交叉熵,因为目标是直接计算网络输出与One-hot编码真实标签的误差。 3. **数据集**: - 数据集由scikit-learn库中的`make_moons`函数生成,生成2000个线性不可分的二分类数据点,数据特征维度为2,呈月牙形分布。 - 数据集被分为训练集和测试集,比例为7:3,以便评估模型在未知数据上的表现。 4. **实现过程**: - 利用NumPy进行矩阵运算,构建权重矩阵并初始化,包括随机权重的初始化。 - 运行前向传播算法,计算网络的输出和每个节点的误差信号。 - 开始反向传播算法: - 从输出层开始,计算各节点的梯度,根据链式法则逐层逆向传播误差。 - 更新权重:使用梯度下降或其变种(如Adam优化器)来调整权重,减小损失函数。 - 重复前向传播和反向传播迭代,直至达到预设的训练轮数或者收敛条件。 5. **可视化**: - 提供了一个名为`make_plot`的辅助函数,用于绘制数据点及其标签,以及可能的预测结果,以便直观理解模型的性能。 这篇文章的核心内容围绕神经网络的实现,重点在于使用NumPy进行矩阵操作,以及反向传播算法的具体步骤。通过这种方式,读者可以了解如何构建一个简单的神经网络,并将其应用到实际的二分类问题上。

相关推荐