吴恩达2022机器学习专项课程C2W1:2.10 一个单层的前向传播 & 2.11 前向传播的一般实现 & Lab03 Numpy构建神经网络

本节课内容

使用python和numpy自行实现前向传播神经网络,从而理解TensorFlow的原理。

构建数据集

只有一个训练样本,两个特征。它是python中的一维数组,而不是矩阵,因此用一个中括号表示。
在这里插入图片描述

代码中表示不同层参数的符号

在这里插入图片描述

实现前向传播神经网络

1.实现第一层的计算

  • 计算第一个神经元激活值:设置w,b,通过w,b计算z。通过z计算激活函数的激活值a。
    在这里插入图片描述

  • 计算第二个神经元激活值
    在这里插入图片描述

  • 计算第三个神经元激活值

在这里插入图片描述

  • 存储每个神经元的激活值:将每个神经元的激活值存入一个数组,这个数组就是第一层的激活向量a1。

在这里插入图片描述

2.实现第二层的计算

接收第一层的激活项a1,然后输出a2_1,这就算实现了两个层的前向传播。
在这里插入图片描述

实现前向传播神经网络(简化过程)

1.构建dense函数

  • 功能:输入前一层激活,给定当前层数对应的w,b并设置激活函数,输出下一层的激活。在这里插入图片描述

  • W参数:矩阵,需要我们设置,表示当前层不同神经元的参数,W的列数对应神经元数量。W大写,因为是矩阵,小写w表示向量和标量。在这里插入图片描述

  • b参数:一个一维数组数组。在这里插入图片描述

  • a_in:层输入的内容,可以是输入层的x,可以是前一层的激活值。在这里插入图片描述

2.构建sequential函数

给定一个x,x表示输入层的内容,如果有4个层,则调用4次dense,并写好顺序,就等于将4个层串联在一起,实现了前向传播。而无需像开始的计算过程,w,b,z,g都要一个一个编写。
在这里插入图片描述

实验

1.实现Dense

  • a_in:输入样本,示例使用一维数组。
  • W:权重矩阵,每个单元n个特征,j个单元。
  • b:偏置向量,j个单元
  • g:激活函数,例如sigmoid,relu
  • 返回值:a_out,j个单元。

利用 for 循环访问层中的每个单元( j ),并对该单元的权重进行点积( W[:,j] ),然后将该单元的偏置相加( b[j] )以形成 z 。然后可以对该结果应用激活函数 g(z)。最终的a_out是一维数组,元素值就是每个神经元的激活值。
在这里插入图片描述

2.实现Sequential

使用上面的my_dense函数,编写创建前向传播神经网络模型的方法,并构建两层神经网络。a1,a2是每一层的激活值。在这里插入图片描述

3.设置模型的权重和偏置

直接选择从上一个实验训练好的权重和偏置。
在这里插入图片描述

4.开始预测

4.1编写预测函数

  • 参数:X表示接受预测的矩阵,W1b1是第一层的权重偏置,W2b2是第二层的权重偏置。
  • 过程“”首先获取输入数据的样本数 m,然后创建一个全零矩阵 p 用于存储预测结果。接下来,通过一个循环遍历输入数据的每个样本,对每个样本调用 my_sequential 函数进行预测,并将预测结果存储在 p 中相应的位置。最后,返回预测结果矩阵 p
    在这里插入图片描述

4.2使用预测函数
和上一个实验的预测过程一致,一个训练样本,神经网络预测出一个数,多个训练样本,神经网络会输出多个训练样本计算的激活值。
在这里插入图片描述

5.检验神经网络的预测

过程和上个实验一致,使用原始数据集检测神经的预测,左图阴影表示神经网络对于预测出好咖啡额的样本敏感,右图表示激活值高于0.5的样本,预测结果为好咖啡。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值