吴恩达第一课第三周学习心得体会_第1页
吴恩达第一课第三周学习心得体会_第2页
吴恩达第一课第三周学习心得体会_第3页
吴恩达第一课第三周学习心得体会_第4页
吴恩达第一课第三周学习心得体会_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

吴恩达第一课第三周学习心得体会1 概述在完成吴恩达第一课第三周,即1hiddenlayer的neuralnetwork学习后,了解了两层神经网络的结构,然后参考网上的资料,完成该周作业,现将心得体会记录如下。2 核心代码以代码文件neuralnetwork_1hiddenlayer_1.py为例。1) 调用库如下所示;2) Sigmoid函数;3) 初始化参数函数;4) 前向传播函数;5) 成本函数;6) 反向传播函数;7) 参数更新函数;8) 构建模型函数;9) 预测函数。3 二元分类问题3.1 二元分类问题1代码文件neuralnetwork_1hiddenlayer_1.py。手写二层神经网络的代码,理解前向传播和反向传播过程。该例程产生的训练数据为二维平面的坐标点,形状呈8瓣花瓣,其中设置部分点标签为0,另一部分为1,绘出后如下图所示。图1 训练样本先对这些点通过逻辑回归进行训练,对样本重新预测的准确率为0.468333。可见逻辑回归处理这类交叉分布的问题,效果一般,对二维平面进行预测并分区,结果如下图所示。图2 逻辑回归运行结果然后再用这些点训练1hiddenlayer的neuralnetwork(神经元个数为4),得到其参数,用其对样本重新预测准确率为0.941667,二维平面预测并分区,结果如下图所示:图3 1hiddenlayerNN运行结果3.2 二元分类问题2代码文件neuralnetwork_1hiddenlayer_2.Py,该文件在“neuralnetwork_1hiddenlayer_1.py”基础上,将训练的坐标点更改为两组环形圈,两层标签分别为0和1。点绘出后如下图所示。图4 训练样本先对这些点通过逻辑回归进行训练,训练后对样本重新预测的准确率为0.468333,效果一般。对二维平面预测并分区,结果如下图所示。图5 逻辑回归运行结果然后再用这些点训练1hiddenlayer的neuralnetwork(神经元个数为5),得到其参数,用其对样本重新预测准确率为1,二维平面预测并分区,结果如下图所示(调试时发现隐藏单元的神经元个数过多时,容易产生过拟合)。图6 1hiddenlayerNN运行结果4 三元分类问题在第二周的学习中,注意到sklearn库中的逻辑回归是可以处理iris这种三元分类的问题的。Iris的数据有4列,取第3列(下标为2)为横坐标,第4列(下标为3)为纵坐标时,三类数据基本不交叉,通过sklearn库中的逻辑回归训练,对样本预测,准确率为0.953333,对二维平面预测并分区,结果如下图所示。图7 逻辑回归运行结果在进行第三周的学习时,考虑这类NN能否解决三元分类的问题。经设计调试,找到了几种解决方法。4.1 Iris三元分类问题解决方法1代码文件neuralnetwork_1hiddenlayer_iris_1.Py。因为要处理三元分类问题,其标签为0 1 2,因此进行了两次分类。1) 第一次分类时,将1 2归为一类,令这两组数据的标签等于1,然后通过神经网络进行一次二元分类。2) 第二次分类有两种方法:a) 一种是将上一次分类标签为1的数据在按照原始标签1 2再进行分类,这种方法的预测率也很不错,但是在进行二维平面预测分区时,因为对数组的处理太麻烦,容易出错,最终未使用这种方法;b) 第二种方法,再对全部数据进行一次二元分类,但令标签为0 1的两组数据标签为0,标签为2数据标签为1。该代码文件的第二次分类采用了上面条目b的方法。在完成两次训练和预测后,将两次预测结果直接相加即可!0 0 1+0 1 1=0 1 2因前面的二层神经网络算法部分代码一致,因此仅贴最后的分类代码如下,其中对预测结果要+0,否则其内容均为False或True,相加后仍为False或True,+0后变为0或1,相加后和等于0或1或2。训练后,对样本预测,正确率达到0.986667,对二维平面预测并分区,运行结果如下图所示。图8 Iris三元分类问题解决方案1运行结果4.2 Iris三元分类问题解决方法2代码文件neuralnetwork_1hiddenlayer_iris_2_ReLU.Py。因为处理的是三元分类,而问题的根源在于sigmoid函数输出只能是01,因此考采用ReLU函数作为最终的激活函数。需要更改的部分如下:1) 输出的激活函数改为ReLU函数;2) 前向传播过程;a) 更改成本函数,显然不能再用yloga+(1-y)log(1-a)了,因为y=0,1,2,a的范围是02。考虑到前面学到的也就(a-y)2/2这个函数了,也比较合适;b) 反向传播过程,成本函数(a-y)2/2的导数正好是a-y,考虑到ReLU的导数在a0时为1,a0,正好dZ2=A2-Y(与逻辑回归一致!),当A20时,dZ2=0。c) 预测函数,因为预测结果应该是0 1 2。最终样本预测准确率为0.96,二维平面预测分区结果如下图所示。图9 Iris三元分类问题解决方案2运行结果4.3 交叉三元分类问题解决方案对于有交叉的三元分类问题,上面方案1是肯定不可行的。因此考虑不更改输出的激活函数和成本函数,而是将输出由1个数值0或1或2,改为一个向量 1,0,0或0,1,0或0,0,1。代码文件neuralnetwork_1hiddenlayer_3_ny_equal_3.py。主要更改部分如下:1) 更改输入数据;2) 预测函数,因为预测结果应该是3m的矩阵。该训练集绘出后如下图所示。图10 交叉的三元分类数据集用sklearn库的逻辑回归进行训练,对样本重新预测的准确率为0.36,二维平面分区结果如下。图11 sklearn库逻辑回归运行结果再用1hiddenlayer的NN进行训练,对样本进行预测,准确率达到1,对二维平面预测并分区,结果如下图所示,可见发生了过度预测。图12 1hiddenlayerNN运行结果5 猫识别问题文件夹CatRecognition_1hiddenlayer下,分别包含:1) 数据文件,在datasets文件夹内,分别包括训练数据和测试数据;2) 自己的图片文件,在images内,用于检验网络;3) 代码文件,CatRecognition_NN_1hiddenlayer.py。代码文件中前面主要是读取文件代码,其中样本文件有209个,读取后的数据维度为20964643,其中209为样本数,两个64分别为图片的横纵像素个数,最后的3对应每个像素的RGB值。读取后将其转换为12288209的二维矩阵,其中12288=64643,即每个样本有12288个特征。将1hiddenlayerNN的核心代码敲入,并用训练数据集进行训练,然后对训练数据和测试数据分别进行预测,准确率分别为0.990431和0.76,相较于第二周的逻辑回归而言有所提高(逻辑回归为1和0.7),过拟合程度降低。对images/cat7.jpg(如下图所示)进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论