当前位置: 首页 > news >正文

吴恩达2022机器学习_第二部分高级学习算法笔记

目录

    • 1.需求预测
    • 2.机器学习例子:图像识别过程:
    • 3.如何构建一层神经元
    • 4.更复杂的神经网络
    • 5.推理:做出预测(向前传播) 手写数字识别例子:
    • 6.tensorflow在代码中实现推理
    • 7.TensorFlow中的数据如何表示
    • 8.构建一个神经网络
    • 9.在一个单层中的向前传播
    • 10.向前传播的一般实现

1.需求预测

在这里插入图片描述
神经元 的作用是输入一个或几个数字,然后输出一个数字或者其他几个号码。(如图中的一个神经元里面就代表了神经元上边的公式,输入x,经过公式计算输出a的值)
神经网络 建立一个神经网络只需要取一堆这些神经元,把它们连接在一起或把它们放在一起。
在这里插入图片描述
注:一层是一组神经元(可以有一个或多个),让我们输入相同或相似的特征,然后输出几个数字在一起。最后一层是输出层,因为最终神经元的输出是神经网络,在神经网络术语中预测的输出概率。我们还将把可负担性意识和感知质量称为激活。
在这里插入图片描述

2.机器学习例子:图像识别过程:

输入图片,输出图片中人的身份。输入图像x被输入到这一层神经元,这是第一个隐藏层,然后提取一些特征。第一层隐藏层的输出被传送到第二个隐藏层。输出被送到第三层。最后到达输出层。估计是某个特定的人。其中第一层神经元在寻找垂直线或垂直边缘,另一个神经元寻找一条定向线或定向边缘,第三个神经元在这个方向寻找一条线,以此类推。

3.如何构建一层神经元

在这里插入图片描述
第一个隐藏层放大来看
在这里插入图片描述
第二个输出层放大来看
如果你想要一个二进制预测(1或者是0),对阈值大小进行判断
总结:神经网络的工作原理:每一层都输入一个数字向量,并对其应用一系列逻辑回归单元,然后计算另一个数字向量,然后从一层传递到另一层,直到最后的输出层计算出它对神经网络的预测,然后你可以在零点五的阈值,或者不提出最终的预测。

4.更复杂的神经网络

当我们说一个神经网络有四个层时,包括所有的隐藏层和输出层,不包括输入层,输入层为第0层。
在这里插入图片描述
第三次要做什么计算才能从二层变成三层?如果它有三个神经元或者我们称为三个隐藏单位。
在这里插入图片描述
计算神经网络中任意层的激活值: 对于任意层l和任意单位j,g也被称为激活函数(因为g输出激活值)如下图所示:
在这里插入图片描述

5.推理:做出预测(向前传播) 手写数字识别例子:

(让你的神经网络做出推断或预测)为了简单起见,我们区分手写数字0和1,所以这只是一个二进制分类问题,我们要输入图像并分类。把那个图像放到88的网格或矩阵中,四个像素强度值,25表示一个明亮的白色像素,零表示一个黑色像素,不同的数字是不同的在这黑白之间的黑色阴影,如下图所示:
在这里插入图片描述
这里我们给出四个输入特性,我们将使用一个带有两个隐藏层的神经网络,第一层有25个神经元或25个单位,第二层有15个神经元或15个单位,最后输出层输出几率是多少
在这里插入图片描述
我们通过一系列计算:我们需要建立的神经网络从输入x(这个8
8或64的矩阵预测概率的四个数字),第一个计算是从x到a1(这就是第一层或隐藏的第一层所做的),它执行上标方括号的计算,如下图所示:
在这里插入图片描述
同理,第二层,因为有15个单元,所以下标是1-15,如下图所示:
在这里插入图片描述
最后一步是计算a3,用相似的计算方法,输出层只有一个单元,所以只有一个输出,所以a3是一个标量。最后你可以选择一个阈值0.5 得出一个二进制分类标签。
在这里插入图片描述
所以,计算顺序是首先取x,在计算a1,再计算a2,再计算a3,a3也是神经网络的输出,所以a3可以写成f(x)。
因此记住: 当我们学习线性回归和逻辑回归时,我们用x的f表示线性回归或logistic回归的输出,所以我们也可以用x 的f来表示由神经网络计算的函数是x 的函数。因为计算是从左到右的,从x计算a1,a2,a3,这种算法也叫正向传播(因为你传播神经元的激活是从左到右沿着向前的方向进行计算的),反之为反向传播。

6.tensorflow在代码中实现推理

同一个算法可以应用于不同的应用。这里拿烤咖啡豆来说,影响因素可以简化为烤的时间长短和烤的温度,
在这里插入图片描述
我们把x设为两个数字的数组,输入的特征是200摄氏度和17分钟,这一层等于密度单位。layer_1创造了一个隐藏的神经元层,有三个隐藏的单位并将其作为激活功能,Dance只是这个层的名字,有三个单元用sigmoid函数,最后计算激活值a1。layer_1将是一个由三个数字组成的列表,因为第一层有三个单元
在这里插入图片描述
第二层有一个单元(units=1),用sigmoid函数,你可以用layer_2函数来计算有a1到a2的值。
在这里插入图片描述
你也可以设置阈值0.5来判断咖啡豆的好坏。
在这里插入图片描述
这就是神经网络中使用tensorflow进行推理的方法。
对于如何加载tensorflow库以及如何加载神经网络的参数w和b,这些是传播的关键步骤,之后再说。
再回到手写数字识别问题 ,x是像素强度值的列表,所以x等于这个像素强度值列表中的一个数字数组,然后初始化并执行前一步的传播层layer_1,units=25也就是25个单元 用sigmoid函数,然后计算一个a1等于layer_1的函数应用于x来构建并通过第二层进行推理
在这里插入图片描述
同样地i,可以按照以下方式设置第二层,计算一个a2
在这里插入图片描述最后就是第三层,也就是最后一层,输出层
在这里插入图片描述
最后可以设置成二进制预测
在这里插入图片描述

7.TensorFlow中的数据如何表示

TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表。
(当你实现新的神经网络时,你可以用一个一致的框架来考虑如何表示你的数据)
这个例子还是咖啡豆。并且你有一个如下所示数据集:
在这里插入图片描述
这里需要明确numpy如何存储向量和矩阵:每一行是一个中括号,总的又在一个中括号里。
在这里插入图片描述
回到咖啡豆的例子。数据集的表示如下:
在这里插入图片描述
用于在神经网络中进行传播或推理的代码
在这里插入图片描述
tensor是tensorflow创建的一种数据类型,用于在矩阵上充分存储和执行计算,可看作表示矩阵的一种方法。(数组)
事实上,如果想取一个a1并把他转回一个tensor的数组,可以用numpy,它将获取相同的数据 并以数字数组的形式返回,而不是以矩阵的形式。

8.构建一个神经网络

在tensorflow中建立一个神经网络:
原先的方法是一次一层的计算,向前推进:
在这里插入图片描述
tensorflow还有一种不同的方式来实现向前推进:
向之前一样,先建立第一层和第二层,但现在你不用自己手动获取数据并将其传递到第一层 然后激活到第一层 再传递到第二层,相反,我们可以告诉tensorflow我们希望它采取第一层和第二层,并将它们串在一起,形成一个神经网络,这就是tensorflow中Sequential函数的作用。
在这里插入图片描述
用tensorflow重做数字识别: 一二三层,然后告诉tensorflow把这些层串成一个神经网络,可以将数据存储在一个矩阵中并运行编译函数和拟合函数,最后进行推断和预测。你可以在x_new上使用模型预测。在这里插入图片描述
可以使代码更紧凑:
在这里插入图片描述
告诉tensorflow为我创建一个模型,按顺序将这三层串在一起,剩下的代码和以前一样。
在这里插入图片描述
这就是在tensorflow中建立神经网络的方法。

9.在一个单层中的向前传播

在这里插入图片描述
在这里插入图片描述

10.向前传播的一般实现

在这里插入图片描述

相关文章:

  • DGL教程
  • FAST-LIO2代码解析(五)
  • 苦卷28天,阿里P8给我的Alibaba面试手册,终于成功踹开字节大门
  • Vue:v-on、v-bind、v-model、@click、:model用法以及区别(附代码实例)
  • 手写Sping IOC(基于Setter方法注入)
  • 一、SpringBoot前置(从0搭建Maven项目)
  • 宝藏教程:超详细一条龙教程!从零搭建React项目全家桶
  • 网络编程学习总结3
  • 欧姆龙CP1H如何进行PLC远程编程及数据采集
  • CSGO Bway电竞ETERNAL FIRE可以参加BLAST FALL,但MOUZ却错过了
  • 收获tips
  • Vue3+elementplus搭建通用管理系统实例十二:使用通用表格、表单实现对应功能
  • 抖音根据关键词取视频列表 API 返回值说明
  • 120页7万字XX云数据中心解决方案技术方案
  • 保险行业如何实现私域快速增长
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【知识碎片】第三方登录弹窗效果
  • Fabric架构演变之路
  • java 多线程基础, 我觉得还是有必要看看的
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Node + FFmpeg 实现Canvas动画导出视频
  • python docx文档转html页面
  • Redis字符串类型内部编码剖析
  • scala基础语法(二)
  • vue.js框架原理浅析
  • Vue组件定义
  • 大型网站性能监测、分析与优化常见问题QA
  • 工作中总结前端开发流程--vue项目
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何用vue打造一个移动端音乐播放器
  • 如何在GitHub上创建个人博客
  • 小而合理的前端理论:rscss和rsjs
  • 新书推荐|Windows黑客编程技术详解
  • 异步
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 组复制官方翻译九、Group Replication Technical Details
  • #pragma 指令
  • (12)Linux 常见的三种进程状态
  • (70min)字节暑假实习二面(已挂)
  • (二)丶RabbitMQ的六大核心
  • (力扣)循环队列的实现与详解(C语言)
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 的程序集加载上下文
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 使用反射注册事件
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET4.0并行计算技术基础(1)
  • .net6+aspose.words导出word并转pdf
  • .NET6实现破解Modbus poll点表配置文件
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .net流程开发平台的一些难点(1)