深度学习入门:两层隐藏神经网络解析

0 下载量 35 浏览量 更新于2024-08-30 收藏 49KB PDF 举报
该资源是一个关于深度学习神经网络的教程,特别关注于具有两个隐藏层的网络结构。这个网络用于手写数字识别任务,利用MNIST数据集,并且使用了预训练的权重参数。代码中涉及到的主要函数包括数据加载、网络初始化以及预测。 在深度学习领域,神经网络是构建复杂模型的基础,特别是对于图像识别任务,多层的网络结构能够捕获更复杂的特征。本示例中,网络包含两个隐藏层,每个隐藏层后面都有激活函数,这里使用的激活函数是Sigmoid。Sigmoid函数在输入为连续值时,能够将其转化为0到1之间的概率值,适合于二分类问题或者作为其他非线性变换的组件。 代码首先导入了必要的库,如NumPy用于数值计算,pickle用于序列化和反序列化数据,以及自定义的函数模块。`load_mnist`函数用于加载MNIST数据集,对数据进行标准化、展平处理,并将标签转换为非独热编码形式。`get_data`函数则返回测试集的数据,其中`x_test`代表图像数据,`t_test`代表对应的标签。 网络的权重和偏置是通过`init_network`函数从预训练的`sample_weight.pkl`文件中加载的。这通常发生在模型训练完成后,保存权重以便后续使用或微调。如果需要重新初始化网络,可以使用`new_init_network`,它同样从同一个文件中加载权重。 核心的预测部分在于计算网络的输出。这里,网络的前向传播过程通过矩阵乘法和逐元素加法完成。`np.dot`函数执行矩阵乘法,`x`与`w1`相乘得到第一隐藏层的激活值`a1`,接着加上偏置`b1`。同样的过程发生在第二隐藏层和输出层,使用了不同的权重矩阵`w2`和`w3`,以及偏置`b2`和`b3`。最后一层的输出通过Softmax函数处理,将激活值转换为概率分布,对应每个类别的概率。 这个代码实例展示了如何利用预训练的权重在两层隐藏神经网络上进行手写数字识别,同时也揭示了深度学习中基本的前向传播计算流程。理解并掌握这部分内容,是进一步学习深度学习,尤其是卷积神经网络和更复杂模型的基础。