吴恩达老师的神经网路和深度学习_03

       在吴恩达老师的神经网路和深度学习_01https://www.cnblogs.com/mengmengxia/p/10522821.html吴恩达老师的神经网路和深度学习_02 https://www.cnblogs.com/mengmengxia/p/10532756.html 中主要对深度学习的概念做了简要的概述。如果不太清楚的话,可以点击上面的连接进行相应的回顾学习。下面将介绍神经网络的编程基础部分,例如有一个包含m个样本的训练集,我们可能习惯于用一个for循环来遍历训练集中的每个样本,但是当实现一个神经网络的时候,我们通常不直接使用for循环来遍历整个训练集。下面的学习笔记将学到如何处理训练集。

  • 二分类(Binary Classification)

        逻辑回归是一个用于二分类(binary classification)的算法。二分类就是输出y只有{0,1}两个离散值(也有{-1,1}的情况)。例如判断一张图片中是否有猫,0 表示无猫(not cat),1表示有猫(cat)。如图1 所示:

(图1)

        图片在计算机中保存的方式是:如果计算机保存一张图片,则需要保存三个矩阵,分别对应图片的红、绿、蓝三种颜色通道,如果你的图片大小为64x64像素,就有三个规模为64x64的矩阵,分别对应图片中红、绿、蓝三种像素的强度值。吴恩达老师为了方便表示用规模为5x4的矩阵来举例说明。如图2所示:

(图2)        (图3)

       把图2 中的像素值提取出来,放入特征向量x 中,如上图3所示,如果图片的大小为64x64像素,那么向量  的总维度,将是64乘以64乘以3,这是三个像素矩阵中像素的总量。用nx=64x64x3=12288 表示输入特征向量的维度,为了简洁用n 来表示输入特征向量x的维度。在二分类问题中,目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果为1还是0,也就是预测图片中是否有猫:

       接下来吴恩达老师又讲了一些符号的定义

       x:表示一个nx维数据,为输入数据,维数为(nx,1);

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

  (x(i),y(i)):表示第i组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;

  X=[x(1),x(2),...,x(m)]:表示所有的训练数据集的输入值,放在一个nx x m 的矩阵中,其中m表示样本数目; 

  Y=[y(1),y(2),...,y(m)]:对应表示所有训练数据集的输出值,维度为1 x m;

       用一对(x,y)来表示一个单独的样本,训练集中将由m个训练样本组成,其中(x(1),y(1))表示第一个样本的输入和输出直到(x(m),y(m))表示最后一个样本,所有的一起表示整个训练集。有时会用Mtrain 表示训练样本的个数,用Mtest 表示测试集的个数

       最后为了能把训练集表示得更紧凑一点,我们会定义一个矩阵用大写 X 的表示,表示训练集矩阵X,输入向量x(1) 表示第一列,x(m) 表示第m列。X训练集矩阵表示矩阵有m列,m是训练集的样本数量,然后这个矩阵的高度记为nx 。在实现神经网络的时候,使用列的这种形式,会让整个实现的过程变得更加简单。如下图4所示

    (图4)

       训练集矩阵X 用python 表示为:X.shape, 这是一条python 命令,用于显示矩阵的规模,即X.shape=(nx,m),X是一个规模为nx乘以m的矩阵。输出标签y也是同样的道理,定义大写的Y 等于y(1),y(2),...,y(m) 所以Y 是一个规模为1 乘以 m 的矩阵,则使用python 表示 Y.shape等于(1,m)。

       从上面可以看出一个好的符号约定能够将不同训练样本的数据很好地组织起来。

让我们接下来一起愉快的玩耍吧!

 

posted @ 2019-03-15 11:26  爱学习的虾  阅读(214)  评论(0编辑  收藏  举报