单神经元BP神经网络

单神经元BP神经网络

前言

学习单神经元BP神经网络的demo,该神经网络只有1层输出层

一、设置参数

  • 图片大小 64*64
  • 训练集 特征数据X(n,64,64,3
  • X = X.reshape(X, -1).T 转换为标准化参数X X(12288,1)
  • 标签数据Y(1,n
  • 测试集 同上
  • 权重数组w w(12288,1)
  • 置值 b
  • 学习率 r
  • 样本数 n

二、涉及算法步骤

1.初始化W,b

随机初始化第一层(隐藏层)相关的参数w.

  • w = np.zeros((dim,1)) w(12288,1)
  • b = 0

1.前向传播

  • X = X.reshape(X.shape[0], -1).T
  • Z = np.dot(w.T,X) + b (X(12288,n)| w(12288,1))
  • A = 1 / (1 + np.exp(-Z)) (A(1,n))
  • cost = -np.sum(Y*np.log(A) + (1-Y)*np.log(1-A)) / m
  • (Y*np.log(A)是数值相乘(向量对应元素相乘)而不是矩阵相乘)

2.反向数据

  • dZ = A - Y dz大小 dz(1,n)
  • dw = np.dot(X,dZ.T) / n dw (12288,1)
  • db = np.sum(dZ) / n

3.梯度下降

通过多次反复1、2、3步骤,找到cost最小时,并反推出w和b

  • w = w - learning_rate * dw w大小 (12288,1)
  • b = b - learning_rate * db

4.数据预测

根据推出的w和b,利用算法:

  1. Z = np.dot(W.T,X) + b
  2. A = 1 / (1 + np.exp(-Z))

A是激活函数,作用是是值映射在0-1之间,通过比较A的大小来判断预测结果是否正确。


总结

选择一个正确的学习步进/学习率很重要。选错了,那么神经网络可能会永远找不到损失函数的最小值处,神经网络预测得永远不会很准。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值