Python使用NumPy构建三层神经网络详解
本文通过Python和NumPy库演示三层神经网络(输入层、隐藏层、输出层)的前向传播实现。涵盖权重初始化、矩阵乘法、Sigmoid激活函数及恒等函数的使用,并提供完整的代码示例与分步解析,帮助读者理解神经网络基础架构。
三层神经网络概述
本文主要介绍如何使用Python结合NumPy库来实现一个三层神经网络的基本示例,供读者参考学习。

神经网络的实现原理相对直观,具备一定基础的用户即可掌握。其核心逻辑主要依赖于上述公式进行计算推导。

该神经网络的整体架构包含三层:输入层、隐藏层和输出层。接下来,我们将重点解析从输出层回溯至第一个隐藏层的计算过程。
本示例使用的开发环境为Jupyter Notebook。
输入层与隐藏层初始化
import numpy as np
#定义X,W1,B1
X = np.array([1.0, 0.5])
w1 = np.array([[0.1, 0.3, 0.5],[0.2, 0.4, 0.6]])
b1 = np.array([0.1, 0.2, 0.3])
#查看他们的形状
print(X.shape)
print(w1.shape)
print(b1.shape)

计算点积
#求点积
np.dot(X,w1)

应用Sigmoid激活函数
def sigmod(x):
return 1/(1 + np.exp(-x))
Z1 = sigmod(A1)
Z1

第二层权重定义
#定义w2,b2
w2 = np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]])
b2 = np.array([0.1,0.2])
#查看他们的行状
print(w2.shape)
print(b2.shape)

第二层前向传播计算
A2 = np.dot(Z1,w2) + b2
A2

第二层激活输出
Z2 = sigmod(A2)
Z2

输出层与恒等函数
#定义恒等函数
def identity_function(x):
return x
#定义w3,b3
w3 = np.array([[0.1,0.3],[0.2,0.4]])
b3 = np.array([0.1,0.2])
A3 = np.dot(Z2,w3) + b3
Y = identity_function(A3)
Y

将上述各个步骤的代码进行整合,形成完整的实现方案。
网络初始化与整合
#整理
#定义一个字典,将权重全部放入字典
def init_network():
network = {}
network['w1'] = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]])
network['w2'] = np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]])
network['w3'] = np.array([[0.1,0.3],[0.2,0.4]])
network['b1'] = np.array([0.1, 0.2, 0.3])
network['b2'] = np.array([0.1,0.2])
network['b3'] = np.array([0.1,0.2])
return network
前向传播函数定义
#定义函数,导入权重与x,得到Y
def forward(network,x):
w1,w2,w3 = network['w1'],network['w2'],network['w3']
b1,b2,b3 = network['b1'],network['b2'],network['b3']
A1 = np.dot(x,w1) + b1
A2 = np.dot(A1,w2) + b2
A3 = np.dot(A2,w3) + b3
Y = identity_function(A3)
Y
调用示例
#调用函数
network = init_network()
X = np.array([1.0,0.5])
Y = forward(network,X)
至此,关于利用Python和NumPy实现三层神经网络的示例代码介绍完毕。如需了解更多相关NumPy与神经网络的内容,建议查阅本站往期文章或继续浏览后续内容,感谢大家的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













