简介:这里是使用神经网络识别手写数字的教程,这个简单的神经网络教程演示了使用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