吴恩达《深度学习》
文章平均质量分 92
本专栏总结了吴恩达老师《深度学习》课程的笔记和编程题,以练代学奔向机器学习之旅。
冲动老少年
识不足则多虑,威不足则多怒,信不足则多言
展开
-
基于逻辑回归算法的“喵”图识别
吴恩达老师在视频中使用的是jupyter,因此在做课后练习题时,本人也采用jupyter notebook。第一题原创 2018-06-28 19:41:24 · 2079 阅读 · 4 评论 -
使用浅层神经网络进行平面数据分类
使用逻辑回归分类的精度:Accuray of lr: 47%(percentage of correctly labelled datapoints)原创 2018-07-02 15:40:58 · 1050 阅读 · 1 评论 -
基于深层神经网络的“喵”图识别
一、深度神经网络的前向传播原创 2018-07-04 16:25:56 · 501 阅读 · 0 评论 -
吴恩达《深度学习》第二课第一周笔记
一、训练、开发、测试集1. 可应用的机器学习算法是一个高度迭代的过程,需要不断调整的参数有:层数、隐藏层神经元数、学习速率、激活函数等等。2. 通常将给定的数据划分为三部分:训练、验证、测试。如果数据集较小:60/20/20, 如果是大数据集(100万条数据以上,验证和测试集各分配1万条即可):98/1/1.3.如果训练集与验证、测试集来源不同,应保证它们处于同一分布。二、偏差/方...原创 2018-07-05 16:38:53 · 1251 阅读 · 2 评论 -
深层神经网络参数初始化方式对训练精度的影响
本文是基于吴恩达老师《深度学习》第二周第一课练习题所做,目的在于探究参数初始化对模型精度的影响。文中所用到的辅助程序在这里。原创 2018-07-05 21:29:21 · 4250 阅读 · 1 评论 -
正则化对深层神经网络的影响分析
本文是基于吴恩达老师《深度学习》第二周第一课练习题所做,目的在于探究参数初始化对模型精度的影响。所用到的辅助程序从这里下载。一、数据处理本文所用第三方库如下,其中init_utils为辅助程序包含构建神经网络的函数。...原创 2018-07-06 18:10:56 · 977 阅读 · 0 评论 -
梯度检验在深度神经网络中的应用
本文是基于吴恩达老师《深度学习》第二周第一课练习题所做,目的在于了解梯度检验在深度神经网络中如何运用。一、梯度检验的意义构建神经网络模型过程中,也许我们能够很容易检验前向传播的过程是否正确执行,但是在反向传播的计算过程中,由于导数或偏导数的使用,我们很难凭借自觉发现,因此梯度检验对于反向传播的正确执行具有重要意义。二、一维梯度检验1.一维函数在进行前向传播和反向传播的流程如下图所示:2.一维函数的...原创 2018-07-07 10:28:51 · 926 阅读 · 0 评论 -
吴恩达《深度学习》第二课第二周笔记
改善深层神经网络之优化算法一、mini-batch梯度下降法(优化方法之一)机器学习的应用是一个高度依赖经验的过程,需要大量的迭代,需要训练大量的模型,所以需要优化算法才能快速训练模型。使用mini-batch的意义:当训练样本集非常巨大时,比如500W个,使用向量化处理数据时每次处理如此巨大的数据会使训练过程非常缓慢。因此,我们可以分批的处理数据,以达到加快训练的目的。划分mini-batch后...原创 2018-07-07 17:21:22 · 1741 阅读 · 0 评论 -
深层神经网络的优化算法
神经网络发展至今,每天都有新的优化算法被提出,但是鲜有通用性好的优化算法,在课程中吴恩达老师介绍了优化效果和通用性都非常好的几种优化算法:mini-batch梯度下降、momentum梯度下降、RMSprop、Adam算法等等,下面逐一进行学习。程序所需的库文件如下import numpy as npimport matplotlib.pyplot as pltimport scipy.io...原创 2018-07-08 15:48:49 · 467 阅读 · 0 评论 -
吴恩达《深度学习》第二课第三周笔记
改善神经网络之超参调试、batch正则化和程序框架一、调试处理超参数:alpha(学习速率),alpha_decay(学习率衰减率),beta(momentum),beta1,beta2,epsilon(Adam),layers(网络层数),hidden_units(隐藏层神经元数),mini_batch_size(mini-bathc的大小)重要等级:一级:alpha;二级:beta、hidde...原创 2018-07-09 17:17:58 · 1063 阅读 · 0 评论 -
使用tensorflow搭建深层神经网络
在吴恩达老师的《深度学习》第二课第三周的课程中,提及到了多种深度学习框架,包括caffe/caffe2,CNTK,DL4J,Keras,Lasagne,mxnet,paddlepadle,tensorflow,Theano,Torch等等,虽然Andrew说不特别推荐某种框架,但因其在谷歌多年的经历在之后的练习中终究还是使用tensorflow框架。下面我们跟着达叔的思路一步一步构建深层神经网络。...原创 2018-07-11 22:21:53 · 8567 阅读 · 10 评论 -
吴恩达《深度学习》第三课第一周笔记
结构化机器学习项目——机器学习策略(一)一、为什么是机器学习(ML)策略我们在优化一个模型时可以从很多角度来着手,如下图,但是如果不分析清楚就一味地从某个方面莽撞前行会浪费大量的时间。二、正交化1.在深度学习中,需要调整的超参数非常多,而对于资深的深度学习专家而言,对于需要调整什么以达到什么效果是很明确的。2.正交化的定义:对于某个由多个维度决定的变量,如果各维度之间可以单独调整而不影响其余维度,...原创 2018-07-13 11:35:29 · 820 阅读 · 0 评论 -
吴恩达《深度学习》第三课第二周笔记
结构化机器学习项目——机器学习策略(2)一、误差分析1.性能上限:优化模型中的某个性能所减少的最大的误差。2.并行评估。对比多种导致误差的原因,通过分析错误标记的例子,统计假阳性(False positives)和假阴性(False nagatives)其在错误识别集中所占的比例,决定最终可选择的优化手段,同时在分析的过程中还可能受到启发发现新的问题类型。这种快速统计的过程可以经常做,只需要几个小...原创 2018-07-14 19:45:55 · 986 阅读 · 0 评论 -
吴恩达《深度学习》第四课第一周笔记
卷积神经网络——卷积神经网络一、计算机视觉1.计算机视觉的具体应用:图像识别、目标检测、图片风格转换。在应用计算机视觉时要面临一个挑战:数据输入大。例如:一张画质为1000*1000*3的图片,其所构建的神经网络中输入特征将是300W,这将消耗巨大的内存,因此要处理这样庞大的神经网络,必须使用卷积技术来构建神经网络。二、边缘检测1卷积计算:卷积计算作为卷积神经网络的基础,其最基...原创 2018-07-15 19:48:05 · 1760 阅读 · 0 评论 -
手把手教你搭建卷积神经网络(CNN)
本文是基于吴恩达老师的《深度学习》第四课第一周习题所做,如果本文在某些知识点上描述得不够透彻的可以参见相关章节的具体讲解,同时极力推荐各位有志从事计算机视觉的朋友观看一下吴恩达老师的《深度学习》课程。1.卷积神经网络构成总的来说,卷积神经网络与神经网络的区别是增加了若干个卷积层,而卷积层又可细分为卷积(CONV)和池化(POOL)两部分操作(这两个重要概念稍后会简单的介绍,如果对CNN的基...原创 2018-07-20 12:09:58 · 82200 阅读 · 24 评论 -
吴恩达《深度学习》第四课第二周
2深度卷积网络——实例探究学习目标:通过本课程的学习之后,可以阅读计算机视觉方面的论文,学习别人以取得的比较好的CNN架构。2.1为什么要进行实例探究1.学习一门技术最好的办法是学习别人如何应用。经典的网络:LeNet-5 AlexNet VGG新型网络:ResNet : 152层 Inception2.2经典网络1.LeNet-5,6万个参数2.Al...原创 2018-07-21 15:53:11 · 1140 阅读 · 0 评论 -
人脸表情识别--基于Keras的深层卷积神经网络
本文是吴恩达《深度学习》第四课《卷积神经网络》第二周课后题第一部分的实现。1.Keras简介Keras创建的目的是深度学习工程师能够快速的搭建和试验不同的模型,如同TensorFlow现对于Python是高层的框架一样,Keras是更高层的框架并提供了额外的抽象,因为我们需要尽可能快速的将头脑中的想法转变成可用的模型,Keras正是基于这个需求而生。不过Keras有一个致命的缺点:它比低层...原创 2018-07-23 13:56:20 · 4435 阅读 · 0 评论 -
基于Keras的ResNet实现
本文是吴恩达《深度学习》第四课《卷积神经网络》第二周课后题第二部分的实现。0.ResNet简介目前神经网络变得越来越复杂,从几层到几十层甚至一百多层的网络都有。深层网络的主要的优势是可以表达非常复杂的函数,它可以从不同抽象程度的层里学到特征,比如在比较低层次里学习到边缘特征而在较高层里可以学到复杂的特征。然而使用深层网络并非总是奏效,因为存在一个非常大的障碍——梯度消失:在非常深层的网络中...原创 2018-07-24 14:47:42 · 27291 阅读 · 18 评论 -
吴恩达《深度学习》第四课第三周
卷积神经网络——目标检测3.1目标定位1.分类与定位分类问题可以有助于定位问题的解决,当识别完图片类型之后我们可以让神经网络的输出增加几个单元,从而输出一个边界框(bounding box),具体而言就是多输出4个数字(b_x, b_y, b_h, b_w),在这种情况下,输出将包含:一个分类标签,四个位置值2.定义目标标签y假设在分类任务中有4类:pedestrian(行...原创 2018-07-26 10:36:43 · 1323 阅读 · 0 评论 -
自动驾驶-汽车检测(YOLO)
本文是基于吴恩达《深度学习》卷积神经网络第三周习题而做,通过建立YOLO模型进行目标检测。所需的第三方库如下,可点击此处下载。import argparseimport osimport matplotlib.pyplot as pltfrom matplotlib.pyplot import imshowimport scipy.ioimport scipy.miscimp...原创 2018-07-27 17:11:17 · 1979 阅读 · 1 评论 -
吴恩达《深度学习》第四课第四周
卷积神经网络——人脸识别与神经风格转换4.1什么是人脸识别? 1.人脸验证与人脸识别验证:输入为图像、名字、ID等,输出为输入的图像与其声明的是否是同一人;识别:输入为图像,输出为该图像是否为数据库中的图像之一,如果是给出ID。2.人脸识别较人脸验证更困难,在之后课程中先建立一个人脸验证模型,如果准确率优化到一定程度再逐步应用到人脸识别中4.2 One-shot 学习1...原创 2018-07-29 14:27:30 · 2057 阅读 · 2 评论 -
吴恩达《深度学习》第五课第一周
序列模型——循环序列模型1.1为什么选择序列模型?1.使用序列模型的实例:语音识别、音乐合成、情感分类、DNA序列分析、机器翻译、视频行为检测、命名实体识别1.2数学符号1.命名实体识别示例:X:输入(待识别的文本)Y:输出(某单词是否为人名,是=1,不是=0)T_x:输入序列的长度T_y: 输出序列的长度X<t>:时序输入数据的t索引值...原创 2018-08-04 15:12:59 · 1147 阅读 · 0 评论 -
吴恩达《深度学习》第五课第二周
序列模型——自然语言处理与词嵌入2.1 词汇表征1.通常在序列模型中我们设置词汇表表征一个词汇的集合,对某个具体的单词,使用one-hot形式表示,比如:这样表征虽然思路简单,但是存在一个缺陷:由于任意两个词汇one-hot进行内积所得的结果均为0,因此无法描述词汇之间的某些联系。比如apple和orange都是水果,那么在预测下面两句话时本应该有借鉴作用。2.特征...原创 2018-08-11 11:00:55 · 1115 阅读 · 0 评论 -
人脸识别——基于CNN的模型实现
本文是基于吴恩达《深度学习》卷积神经网络第四周习题而做。通常人脸识别问题分为两类:人脸验证和人脸识别,人脸验证可以作为人脸识别的前提,具体的讲解可以观看达叔《深度学习》教程,在此默认大家对人脸识别问题已有了解。所需的第三方库如下,其中所用的数据集和辅助程序可点击此处下载。from keras.models import Sequentialfrom keras.layers impor...原创 2018-08-19 14:43:19 · 32231 阅读 · 15 评论 -
吴恩达《深度学习》第五课第三周
序列模型与注意力机制3.1基础模型1.seq2seq模型在法译英句子中,输入的法语有5个元素,输出有6个元素。首先我们需要构建一个编码网络,这是一个典型的RNN的结构(可以是GRU或LSTM)每次只向网络输入一个法语单词,在接收完序列后,RNN会输出一个向量来代表输入序列X<1>到X<5>。然后构建解码网络,以编码网络的输出作为输入,每次输出...原创 2018-08-20 19:45:47 · 1634 阅读 · 0 评论 -
神经风格迁移——基于VGG算法
本文是基于吴恩达《深度学习》卷积神经网络第四周习题而做。神经风格迁移的效果是将A图片的某些特征迁移到B图中,使B图具有与之相同的风格,具体的讲解可以观看达叔《深度学习》教程。所需的第三方库如下,其中所用的数据集和辅助程序可点击此处下载。import osimport sysimport scipy.ioimport scipy.miscimport matplotlib.pypl...原创 2018-08-21 21:24:53 · 7720 阅读 · 6 评论 -
构建RNN(Recurrent Neural Network)
目前RNN网络可以在深度学习框架下通过调用函数实现(比如:tf.nn.rnn_cell),但为了掌握更多RNN的细节,我们还是需要使用numpy来逐步实现。由于RNN网络具有“记忆力”,因此非常适合NLP和序列任务。RNN网络每次读取一个输入X(t),输入信息从当前时间步传到下一步的过程中,网络隐含层的激活函数会“记住”一些信息或上下文内容。这种机制允许单向RNN从前面的输入中获取信息以处理后...原创 2018-08-30 20:56:27 · 1289 阅读 · 0 评论 -
基于LSTM的爵士乐自动化创作
本文是基于吴恩达老师《深度学习》第五课第一周练习题所做。0.背景简介使用LSTM模型对爵士乐进行学习训练,最终编制出一段具有爵士风格的乐曲。导入所需的第三方库,其中所用辅助程序可点击此处下载。import IPythonimport sysfrom music21 import *import numpy as npfrom grammar import *from q...原创 2018-09-05 20:38:51 · 1268 阅读 · 0 评论 -
恐龙岛--构建字符级语言模型
本文是基于吴恩达《深度学习》第五周第一课后练习题所做。0.背景简介本练习题中,达叔提出了一个有趣的问题,让我们在现有的已知恐龙名称的基础上创造新的恐龙 ,而且如果所创造的新品恐龙和其外貌不相称的话就会被消灭。主要思路是利用现有的恐龙数据集,构建字符级的语言模型来产生新的名字,算法会学习不同的名字特征,然后产生新的名字。通过本练习可以实现如下4个目标:(1)如何使用RNN存储可处...原创 2018-09-03 22:08:39 · 1407 阅读 · 0 评论 -
词向量的优化操作
本文是基于吴恩达老师《深度学习》第五课第二周练习题所做。0.背景简介由于词向量的训练需要花费大量的计算,因此本文直接load预先训练好的词向量,在辅助程序中使用read_glove_vecs()函数从glove.6B.50d.txt中导入。def read_glove_vecs(glove_file): with open(glove_file, 'r', encoding ...原创 2018-09-19 21:29:37 · 984 阅读 · 0 评论