神经网络学习笔记

  • 简单神经网络手算!

简单神经网络手算!

通过简单神经网络的手算过程。了解代码每步的效果。为以后复杂的网络打个好的基础。

简单的神经网络如上图所示:输入两个参数x1和x2,分别乘权重w1和w2,再加一个偏置参数,最终得到值z,然后将得到的z经过激活函数后,得到预测值a。
如下图所示:

流程图如下:

以代码为例,计算如下:

# 计算dw和db
def propagate(w,b,X,Y):#  dz= a-y ; dw=x*dz; db =dz ; cost = (1/m)Loss; Loss =-( y*loga+(1-y)*log(1-a)); a = sigmoid(z) ; z=x*w+b;m=X.shape[1]z = np.dot(w.T,X)+bprint("z:",z)a = sigmoid(z)print("a:", a)loss = -(Y*np.log(a)+(1-Y)*np.log(1-a))print("loss:",loss)cost = (1/X.shape[1])*np.sum(loss)print("cost:",cost)dz = a-Yprint("dz:",dz)dw=(1/m)*np.dot(X,dz.T)print("dw:",dw)db=(1/m)*np.sum(dz)print("db:",db)# 使用断言确保数据正确assert (dw.shape == w.shape)assert (db.dtype == float)cost = np.squeeze(cost)assert (cost.shape == ())# 创建一个字典,把dw 和 db保存起来grads = {"dw": dw,"db": db}return (grads, cost)#测试一下propagate
print("====================测试propagate====================")
#初始化一些参数
w, b, X, Y = np.array([[1], [2]]), 2, np.array([[1,2,3], [4,5,6]]), np.array([[1, 0,1]])
grads, cost = propagate(w, b, X, Y)
print ("dw = " + str(grads["dw"]))
print ("db = " + str(grads["db"]))
print ("cost = " + str(cost))

输出结果为:

====================测试propagate====================
z: [[11 14 17]]
a: [[0.9999833  0.99999917 0.99999996]]
loss: [[1.67015613e-05 1.40000008e+01 4.13993765e-08]]
cost: 4.6666725247884155
dz: [[-1.67014218e-05  9.99999168e-01 -4.13993756e-08]]
dw: [[0.6666605 ][1.66664293]]
db: 0.3333274752169162
dw = [[0.6666605 ][1.66664293]]
db = 0.3333274752169162
cost = 4.6666725247884155

代码中给的初试数据如下图:

第一步计算z=wx+b

 z = np.dot(w.T,X)+b

即将w转置后和矩阵A求积。
其中w是21的。理解为有两个参数,w1和w2。X为23的。理解为有三个输入集合。Y为1*3的。有三个真实值。
数学公式如下图:

 a = sigmoid(z)loss = -(Y*np.log(a)+(1-Y)*np.log(1-a))cost = (1/X.shape[1])*np.sum(loss)dz = a-Y

计算步骤如下图所示:

dw=(1/m)*np.dot(X,dz.T)

np.dot(X,dz.T)

做的运算就是将所有样本的每个x和对应的dz相乘后相加。除以样本数量后,得到的就是平均值。
db运算同dw。

神经网络知识参考吴恩达视频:B站视频
代码参考:代码参考

简单神经网络手算笔记相关推荐

  1. 神经网络学习笔记3——Transformer、VIT与BoTNet网络

    系列文章目录 神经网络学习笔记1--ResNet残差网络.Batch Normalization理解与代码 神经网络学习笔记2--VGGNet神经网络结构与感受野理解与代码 文章目录 系列文章目录 A ...

  2. 【AI】利用简单神经网络做动作识别——基于coco关键点

    前言 coco数据集包含了关键点检测,如果想利用提取到的这些关键点做行为识别,该怎么办呢?下文主要通过搭建一个简单神经网络(多层感知机)来做关键点的分类. 任务:假如需要对打电话和玩手机的动作做分类. ...

  3. 迷人的神经网络——机器学习笔记1

    目录 迷人的神经网络--机器学习笔记1 第1章 神经元模型及网络结构 1.1 神经元模型 1.1.1 单输入神经元 1.1.2 激活函数 1.1.3 多输入神经元 1.2 网络结构 1.2.1 单层神 ...

  4. 深度学习(一)简单神经网络【识别猫】

    前一阶段在学习机器学习中的线性回归和logistic回归,学了这些,对于深度学习打下了基础.对于深度学习这一门课,我是在B站上跟着吴恩达老师的课程,再加上黄海广老师整理的深度学习笔记来学习,目前我已经 ...

  5. 径向基(Radial Basis Function:RBF)神经网络学习笔记

    原创不易,转载前请注明博主的链接地址:Blessy_Zhu https://blog.csdn.net/weixin_42555080 一. 从BP神经网络到RDF神经网络 在上一篇文章BP(Back ...

  6. MNIST数据集合在PaddlePaddle环境下使用简单神经网络识别效果

    简 介: 通过PaddlePaddle构造的简单神经网络对于MNIST数据库进行实验,可以看到使用普通的稠密网络,便可以达到很高的识别效果.训练结果存在一定的随机性.这取决于训练其实的条件.由于在Pa ...

  7. 神经网络学习笔记-02-循环神经网络

    神经网络学习笔记-02-循环神经网络 本文是根据WildML的Recurrent Neural Networks Tutorial写的学习笔记. 循环神经网络 循环神经网络适用于处理序列化信息,比如: ...

  8. tensorflow3 非线性回归、mnist、简单神经网络

    mnist数据集 手写数字的数据集. 60000行训练数据集,10000行测试数据集 下载地址:http://yann.lecun.com/exdb/mnist/index.html mnist数据集 ...

  9. python神经网络实例_Python编程实现的简单神经网络算法示例

    本文实例讲述了Python编程实现的简单神经网络算法.分享给大家供大家参考,具体如下: python实现二层神经网络 包括输入层和输出层 # -*- coding:utf-8 -*- #! pytho ...

  10. PyTorch入门(二)--实现简单神经网络

    实现简单神经网络 1. 神经网络基本介绍 2. Autograd包 3. 实现神经网络 3.1 定义神经网络与训练流程 3.2 运行神经网络与计算损失 3.3 反向传递与权值更新 3.4 神经网络中损 ...

最新文章

  1. echarts ucharts 和_使用chart和echarts制作图表
  2. 单例模式的一种实现方法
  3. Python高级特性——切片(Slice)
  4. 命令行里给个注释,AI就能自动生成代码
  5. xcode编译Undefined symbols for architecture i386问题解决
  6. Redis双机热备方案--转
  7. Tomcat原理详解和各种集群的实现(转自:http://harisxiong.blog.51cto.com/7513022/1304746)
  8. python算法与数据结构-数据结构中二叉树的介绍
  9. Java多线程之线程虚假唤醒
  10. poj 2823 单调队列
  11. 每天一个linxu命令6之jps  查看java进程的端口
  12. Livejourmal是什么
  13. 为什么面试你要25K,测试总监只给你15K
  14. 批处理学习总结之常用符号
  15. python培训班靠谱吗-什么样的python培训机构靠谱?
  16. 解决flash builder 4.6安装过程中安装程序遇到错误(-1)
  17. Linux_access the file or directory which start with -
  18. toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别...
  19. php网页表格样式,HTML的表格样式
  20. 《指弹:风居住的街道》

热门文章

  1. 雅思备考-口语词组积累-第一章
  2. 尘埃落定!清华才子王垠​加入华为职级 22,前阿里 P10 赵海平加入字节跳动,职级或为 4+...
  3. 【转载】KDiff3 Merge工具的使用 极简教程
  4. GB2312和UTF-8
  5. Sketch 使用快捷键记录
  6. Polymorphism in Overloaded and Overridden Method
  7. 帆软报表更新到服务器控件展示不出来_帆软报表问题汇总
  8. 李乐为担任BCF理事
  9. python 矩阵特征值分解_特征值分解和奇异值分解
  10. 六轴陀螺仪简介及在智能车中的应用