一个简单的神经网络实例——两层神经网络手写数字识别

这篇教程介绍了如何使用numpy构建一个简单的两层神经网络来识别手写数字。通过初始化权重和偏置,定义sigmoid激活函数,实现前向传播和反向传播,经过训练,神经网络最终能对输入数据进行预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:这里是使用神经网络识别手写数字的教程,这个简单的神经网络教程演示了使用numpy从零开始实现一个简单的神经网络。我们定义前向传播和反向传播函数,在训练过程中不断更新权重,完成对数据的拟合。

 

1. 准备数据:我们准备了一个简单的训练集,包含4个输入和相应的期望输出。

 python
 inputs = np.array([[0,0],[0,1],[1,0],[1,1]])
 targets = np.array([[0],[1],[1],[0]])


2. 初始化权重和偏置:我们为两层网络随机初始化权重和偏置。

 python 
 w1 = np.random.randn(2,3)  
 b1 = np.random.randn(3)
 w2 = np.random.randn(3,1)
 b2 = np.random.randn(1)


3. 定义激活函数:我们选择sigmoid作为激活函数。

 python
 def sigmoid(x):
     return 1/(1+np.exp(-x))
 

4. 编写前向传播函数:完成从输入层到输出层的信号传递。

 python 
 def forward_propagate(inputs,w1,b1,w2,b2):
     # 隐藏层
     h1 = sigmoid(np.dot(inputs,w1) + b1) 
     # 输出层
     predictions = sigmoid(np.dot(h1,w2) + b2)
     return predictions


5. 编写反向传播函数:根据预测结果计算误差,并更新权重。

 py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值