吴恩达《深度学习》第一门课(2)神经网络的编程基础

简介: 2.1二分类(1)以一张三通道的64×64的图片做二分类识别是否是毛,输出y为1时认为是猫,为0时认为不是猫:y输出是一个数,x输入是64*64*3=12288的向量。(2)以下是一些符号定义(数据集变成矩阵之后进行矩阵运算代替循环运算,更加高效)x:表示一个nx维数据,维度为(nx,1)...

2.1二分类

(1)以一张三通道的64×64的图片做二分类识别是否是毛,输出y为1时认为是猫,为0时认为不是猫:

y输出是一个数,x输入是64*64*3=12288的向量。

(2)以下是一些符号定义(数据集变成矩阵之后进行矩阵运算代替循环运算,更加高效)

x:表示一个nx维数据,维度为(nx,1)

y:表示输出结果,取值为(0,1);

(x(i),y(i)):表示第i组数据;

X=[x(1),x(2),……,x(m)]:表示按列将所有的训练数据集的输入值堆叠成一个矩阵;其中m表示样本数目;

Y=[y(1),y(2),……,y(m)]:表示所有输入数据集对于的输出值,其维度为1×m;

2.2逻辑回归

(1)逻辑回归的输出值是一个概率,算法思想如下:

(2)激活函数使用sigmoid,它使得输出值限定在0到1之间,符合概率的取值。

(3)关于偏置项(偏差)b,可将其变成θ0,对应的x0恒定为1,如下所示:

2.3逻辑回归的代价函数

(1)损失函数(针对单个样本):

(2)代价函数(针对全部训练样本):

2.4梯度下降法

(1)下图中左边为凸函数,右边为非凸函数,逻辑回归中代价函数为凸函数,故任意的初始化都能收敛到最优点:

(2)参数w、b的更新方式:

2.5导数

导数即斜率。

2.6跟多的导数例子

记住一些常见的导数求法或者直接查看导数表。

2.7计算图

(1)下图展示计算图计算的过程:

(2)正向传播用于计算代价函数

2.8计算图的导数计算

(1)反向传播利用链式法则来进行求导,如对a进行求导,其链式法则公式为:

2.9逻辑回归中的梯度下降

针对于单个样本

(1)计算图如下:

(2)首先计算da:

(3)然后计算dz:

(4)最后计算dw,db(下面的式子其实已经对所有样本进行的求导):

2.10m个样本的梯度下降法

(1)以下代码显示了对整个数据集的一次迭代

(2)以上过程会有两个循环,一个循环是循环是遍历样本,第二个循环是当w很多时是要循环的,上面之写出了两个w,所以没体现出来。

2.11向量化

(1)使用循环的方式计算:ωTx

(2)使用向量的方式

后者不仅书写简单,更重要的是计算速度可以比前者快特别多。

2.12向量化的更多例子

(1)消除w带来的循环

设置u=np.zeros(n(x),1)来定义一个x行的一维向量,从而替代循环,仅仅使用一个向量操作dw=dw+x(i)dz(i),最后我们得到dw/m。

2.13向量化逻辑回归

(1)将样本x横向堆叠,形成X,同时根据python的广播性质(把实数b变成了(1,m)维),得到:

(2)继续利用Python的计算方法,得到A:

2.14向量化logistic回归的梯度输出

(1)没有用向量化时使用的代码:

(2)使用向量化之后的代码:

其中前面五个式子完成了前向和后向的传播,也实现了对所有训练样本进行预测和求导,再利用后两个式子,梯度下降更新参数。另外如果需要多次迭代的话,还是需要用到一个循环的,那是避免不了的。

2.15Python中的广播

(1)下图形象的总结了Python中的广播

(2)在Python的numpy中,axis=0是按照列操作,axis=1,是按照行操作,这一点需要注意。

2.16关于python_numpy向量的说明

(1)使用a=np.random.randn(5)生成的数据结构在python中称为一维数组,它既不是行向量也不是列向量,用a.shape的结果是(5,)这表示它是一个一维向量,a和它的转置相乘其实得到的是一个数。

 

(2)应该使用a=np.random.randn(5,1)这样生成的是一个行向量,它和他的转置乘积会是一个矩阵:

 2.17Jupyter/iPython Notebooks快速入门

2.18(选修)logistics损失函数的解释

(1)首先需要明确,逻辑回归的输出表示y等于1的概率。故有:

(2)合并成一个式子(要使得式子越大越好):

(3)根据对数函数log的单调递增性,对上式取对数有:

(4)要最大化上式,最小化上式取反,得到一个样本的损失函数。

(5)所有样本时,认为样本间独立同分布,故联合概率就是每个样本的乘积:

(6)两边取对数得到:

(7)要最大化上式(最大似然估计)也就是最小化:

总结一下:为了最小化成本函数J(w,b),我们logistic回归模型的最大似然估计的角度出发,假设训练集中的样本都是独立同分布的条件下。

相关文章
|
10天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
139 55
|
20天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
109 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
7天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
53 31
|
13天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
16天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
20天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
46 3
|
26天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
36 1
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
9天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
47 17