首页 > 其他分享 >机器学习(吴恩达) 4

机器学习(吴恩达) 4

时间:2024-09-01 18:24:58浏览次数:12  
标签:吴恩达 Dense 函数 sigmoid activation 学习 units 机器 model

神经网络/深度学习

1.综述

        动机:建立软件模仿大脑 应用:语音识别 到 计算机视觉 到 文本(自然语言过程NLP)

        传统机器学习:线性回归,逻辑回归

2.需求预测

        层:一层可以有多个/一个神经元,以相同或相似特征作为输出,输出几个数字

        激活(activation):生物神经元发送高输出值的程度

        包括了输入层,隐藏层,输出层

        神经网络具有从数据中自动学习并选择重要特征的能力

        例子:图像识别(从学习边缘到学习面部特征和形状)

3.层

        上标[1/2]表明与神经网络第1/2层相关的数量 神经网络的工作原理:每一层输入一个数字向量,并对其应用一组逻辑回归单元,计算另一个数字向量,然后从一层到另一层,直到得到最终的输出

        输入层也叫零层,这个神经网络有4层,包括隐藏层和输出层。

        计算任何层的激活:(给定前一层的激活时)

        其中L是层数,把特征向量x设置为a[0]

        前向传播类似于上面这种,越靠近输出层,隐藏层的神经元数量就越少

4.TensorFlow中的数据

x = np.array([[200,17]])#组成一个1×2的二维矩阵
#结果为[200 17]
x = np.array([[200],[17]])#组成一个2×1的二维矩阵
#结果为[200
#		17]
x = np.array([200,17])#组成一个一维数组

tf.Tensor([[0.2 0.7 0.3]],shape=(1,3),dtype=float32)#建立1×3数组的TensorFlow 张量
a1.numpy()#以numpy数组的形式返回

在TensorFlow中构建神经网络

#前向传播计算
x = np.array([[200.0,17.0]])#初始化数据
layer_1 = Dense(units=3,activation="sigmoid")#创建第一层
a1 = layer_1(x)#计算a1

layer_2 = Dense(units=1,activation="sigmoid")#创建第二层
a2 = layer_2(a1)#计算a2
layer_1 = Dense(units=3,activation="sigmoid")
layer_2 = Dense(units=1,activation="sigmoid")
model = Sequential([layer_1,layer_2])#tensorflow的序列函数自动把layer_1和2串在一起构成神经网络

x = np.array([[200.0,17.0],[120.0,5.0],[425.0,20.0],[212.0,18.0]])#把数据numpy数组,4×2矩阵
y = np.array([1,0,0,1])#y存放在一个一维数组
model.compile(...)#编译
model.fit(x,y)#拟合
model.predict(x_new)#预测

#简化前三行
model = Sequential([Dense(units=25,activation="sigmoid"),Dense(units=15,activation="sigmoid"),Dense(units=1,activation="sigmoid")])

在单个层中实现前向传播

前向传播的一般实现

        W.shaper[1]返回列数 shape[0] :读取行数 在线代中,矩阵用大写字母,小写字母用向量和标量表示

AI的关系

5.神经网络高效实现(矢量化)

矩阵乘法计算:

  • 前一个矩阵的列(转置)=后一个矩阵的行

  • 新矩阵的行数等于第一个矩阵的行(转置之后就是列),等于后一个矩阵的列 因为只有相同长度的向量可以点乘

        均为调用矩阵乘法函数的方式

自定义基础知识:张量和运算 | TensorFlow Core (google.cn)icon-default.png?t=N7T8https://tensorflow.google.cn/tutorials/customization/basics?hl=sv

6.TensorFlow实现

1告诉TensorFlow模型,如何计算 2使用特定的损失函数编译模型3训练模型

模型训练步骤:1如何计算输出根据给定的x和参数 2训练细节:损失函数 3最小化成本函数,来训练模型

补充: np.dot(A,B),np.matmul(a,b), a@b

二维矩阵,矩阵乘积;一维矩阵,内积(点乘,对应元素相乘最后相加)

np.multiply(A,B) 或 A*B

对应元素相乘,组成一个新数组

7.训练细节


  • 创建模型

  • 损失和成本函数

二元交叉熵损失函数(binary cross entropy function)

model.compile(loss=binary cross entropy())
  • 梯度下降

model.fit(X,y,epochs=100)

8.激活函数

  • 线性激活函数(Linear activation function):g(z)=z 还有一种说法是没有激活函数

  • sigmoid函数:g(z)=1/(1+e-z)

  • 线性整流函数(Rectified Linear Unit,ReLU):g(z)=max(0,z)

9.选择激活函数

  1. 选择输出层的激活函数取决于标签y

    • 当输出是0/1(二进制分类问题时),选择sigmoid激活函数

    • 当输出有正有负(回归问题),选择线性激活函数

    • 当输出非负时(回归问题),选择ReLU函数

  2. 隐藏层的激活函数使用relu作为默认激活函数

具体实现:

from tf.keras.layers import Dense
model = Sequential([
    Dense(units=25,activation='relu'),
    Dense(units=15,activation='relu'),
    Dense(units=1,activation='sigmoid')
])

10.为什么需要激活函数

  • 线性函数的线性函数还是线性函数

所以不要在神经网络的隐藏层使用线性激活函数

11.多类

多分类仍然是分类问题,其中可能有两个以上(≥2)可能的输出标签

12.softmax

softmax回归算法是logistic回归算法的推广

  • 逻辑回归与softmax回归的激活函数比较

  • 逻辑回归与softmax回归的成本函数比较

13.softmax实际代码:

sofrmax的改进(更推荐使用):

取消中间值,通过底部指定损失函数的表达式,使得计算更加准确

逻辑回归

model =  Sequential([ Dense(units=25,activation='sigmoid')
Dense(units=15,activation='sigmoid')
Dense(units=10,activation='linear')
])#输出层的激活改为线性

model.compile(loss=BinaryCrossEntropy(from_logits=True))

sofamax回归

model =  Sequential([ Dense(units=25,activation='relu')
Dense(units=15,activation='relu')
Dense(units=10,activation='linear')
])

model.compile(loss=SpareCrossEntropy(from_logits=True))

输出的是z1,等,所以预测时要调用softmax/sigmoid函数计算概率

标签:吴恩达,Dense,函数,sigmoid,activation,学习,units,机器,model
From: https://blog.csdn.net/weixin_52140860/article/details/141781980

相关文章

  • Datawhale X 李宏毅苹果书 AI夏令营 深度学习入门笔记02
    目录一、学习资料二、学习笔记(一)线性模型1、考虑周期性2、修改模型(二)模型变形之分段线性曲线1、分段线性直线2、分段线性曲线的图像和表达式(机器学习第一步:写出带有未知数的函数)(1)如何构成(2)如何表达(3)如何改进3、分段线性曲线的损失(机器学习第二步:定义损失)4、分段......
  • 深度学习与大模型第1课环境搭建
    文章目录深度学习与大模型第1课环境搭建1.安装Anaconda2.修改环境变量2.1修改`.condarc`文件2.2使用AnacondaPrompt修改环境变量3.新建`.ipynb`文件机器学习基础编程:常见问题:深度学习与大模型第1课环境搭建1.安装Anaconda首先,您需要安装Anacon......
  • Datawhale X 李宏毅苹果书 AI夏令营 深度学习进阶笔记02
    目录一、学习资料二、学习笔记(一)自适应学习率(adaptivelearningrate)1、什么是+为什么要用2、三种自适应学习率方法(1)AdaGrad(AdaptiveGradient)(2)RMSprop(RootMeanSquaredpropagation)(3)Adam(Adaptivemomentestimation)(二)学习率调度(learningratescheduling)1、为什么......
  • STM32F1+HAL库+FreeTOTS学习8——第一个任务,启动!
    STM32F1+HAL库+FreeTOTS学习8——第一个任务,启动!开启任务调度器1.函数vTaskStartScheduler()2.函数xPortStartScheduler()启动第一个任务1.函数prvStartFirstTask()2.函数vPortSVCHandler()上一期我们学习了列表和列表项的相关内容和API函数实验,接下来我们......
  • Qt/QML学习-Calendar
    QML学习Calendar例程视频讲解代码main.qmlimportQtQuick2.15importQtQuick.Window2.15importQtQuick.Controls1.4importQtQuick.Controls.Styles1.4importQtQuick.Controls2.15Window{width:640height:480visible:truetitle:qs......
  • 【python学习】第一次学习编程的时候,我怀疑过自己是不是太笨了,还好后来发现
    你是如何克服编程学习中的挫折感的?面对今天的这个主题,我深有感触,我必须分享一个关于我自己的真实的故事,希望它能够给每一个初学者带来一些鼓励和启发。相信自己,其实,编程没什么困难的。第一次学习python的经历在我第一次学习python的时候,上的是python的基础课程,当时教室里......
  • Blazor基础学习填坑系列-02-添加依赖包
    继续学习官方给出的demo,参照示例代码,添加包引用时卡住了,官方给出的包的版本6.0.X明显跟当前用的不一致 心想,就别在终端中敲指令了,干脆手动添加吧,结果找不到入口,摸索了下,终于找到:依赖项-包,右键-管理NuGet程序包 根据依赖包名搜索,安装,版本号会自动带出,代码会自动补全......
  • 安卓学习
    项目结构MyAndroidProject/├──build.gradle├──settings.gradle├──gradle/├──app/│├──build.gradle│├──src/││├──main/│││├──java/存放Java或Kotlin源代码,按包名结构组织。│││├──re......
  • 学习笔记 ---- 基环树
    目录算法解析基环树与基环森林模板例题[NOIP2018提高组]旅行[ZJOI2008]骑士[IOI2008]IslandLongWaytobeNon-decreasing算法解析基环树与基环森林基环树是指有且仅有一个环的树。基环森林是指若干棵基环树构成的森林。对于有向图,基环树可分为内向基环树和外向基环......
  • MVC与设计模式理解-lnmp学习之路
    一、MVC前言:        MVC是一种应用架构模式,也可以说是一种业务架构或是一种应用设计思想,用于组织业务逻辑并分离代码的。        MVC组成结构是Model-View-Controller,Model是管控数据层,View是管控视图层,Controller是管控业务逻辑层。举例:       ......