浅层BP神经网络

本文介绍了如何构建和训练一个简单的两层BP神经网络,包括隐藏层和输出层。网络中隐藏层有4个神经元,使用tanh激活函数,输出层采用sigmoid函数处理二分类问题。通过随机初始化权重、前向传播、反向传播和梯度下降进行训练,并讨论了神经元数量对预测准确性的影响。
摘要由CSDN通过智能技术生成

浅层BP神经网络

前言

学习浅层神经网络的demo,该神经网络总共有两层的,其中隐藏层1层,其中有4个神经元,输出层1层,其中一个神经元

一、设置参数

  • 训练集 特征数据X(2,n) 标签数据Y(1,n)
  • 测试集 (2,n)
  • 权重数组 (4个神经元)W1 W1(4,2) W2(1,4)
  • 置值b1 b1(4,1) b2(1,1)
  • 学习率 learning_rate
  • 样本数 n

二、涉及算法步骤

1.随机初始化每层的W,b

每一个隐藏层神经元都与输入层的每一个神经元相连。每一个相连都会有一个对应的参数w。
所以W1的维度是(n_h, n_x),表示(隐藏层的神经元个数,输入层神经元个数)

  • W1 = np.random.randn(n_h, n_x) * 0.01 W1(4,2)

将第一层的参数b赋值为0,因为w已经非0了,所以b可以为0
因为每一个神经元只有一个对应的b,所以b1的维度是(n_h,1),表示(隐藏层神经元个数,1)

  • b1 = np.zeros(shape=(n_h, 1)) b1(4,1)

同理,初始化第二层的w和b

  • W2 = np.random.randn(n_y, n_h) * 0.01 W2(1,4)
  • b2 = np.zeros(shape=(n_y, 1)) b2(1,1)

2.前向传播

  • Z1 = np.dot(W1, X) + b1 #Z1(4,n)
  • A1 = np.tanh(Z1) #A1(4,n)第一层的激活函数我们使用tanh。numpy库里面已经帮我们实现了tanh工具函数
  • Z2 = np.dot(W2, A1) + b2 #Z2(1,n)
  • A2 = sigmoid(Z2) #A2(1,n)第二层我们使用sigmoid,因为我们要解决的这个问题属于二分问题。
  • cost = (np.multiply(np.log(A2), Y) + np.multiply((1 - Y), np.log(1 - A2))) / n #cost(1,n)

3.反向传播

  • dZ2= A2 - Y dZ2(1,n)

  • dW2 = (1 / m) * np.dot(dZ2, A1.T) dW2(1,4)

  • db2 = (1 / m) * np.sum(dZ2, axis=1, keepdims=True) db2(1,1)

  • dZ1 = np.multiply(np.dot(W2.T, dZ2), 1 - np.power(A1, 2)) dZ1(4,n)

  • dW1 = (1 / m) * np.dot(dZ1, X.T) dW1(4,2)

  • db1 = (1 / m) * np.sum(dZ1, axis=1, keepdims=True) db1(4,1)


3.梯度下降

  • W1 = W1 - learning_rate * dW1
  • b1 = b1 - learning_rate * db1
  • W2 = W2 - learning_rate * dW2
  • b2 = b2 - learning_rate * db2

4.数据预测

#预测其实就是简单地执行一次前向传播

  • Z1 = np.dot(W1, X) + b1 #Z1(4,n)
  • A1 = np.tanh(Z1) #A1(4,n
  • Z2 = np.dot(W2, A1) + b2 #Z2(1,n)
  • A2 = sigmoid(Z2) #A2(1,n

总结

在这个2层的浅层神经网络中,隐藏层只用了4个神经元,其实如果神经元更多些,预测结果会更准确一些。当然也不是越多越准确。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值