深度学习笔记
awake020
这个作者很懒,什么都没留下…
展开
-
深度学习作业L5W3(2):Improvise a Jazz Solo with an LSTM Network
构建一个识别触发语言的模型(siri)数据构建我们手里有:背景音正例音(符合trigger word)反例音 (不符合trigger word)我们把正例音和反例音随机插在背景音当中作为训练集数据,同时如下设置标签:在每个正例音结束之后,将一定时间段的y值设为1(增加1的个数提高学习效果)判断时间段是否冲突# GRADED FUNCTION: is_overlappingdef is_overlapping(segment_time, previous_segments): ""原创 2020-05-26 00:41:59 · 283 阅读 · 1 评论 -
深度学习作业L5W3(1):Neural Machine Translation
利用attention模型构造一个日期翻译模型(将各种日期描述翻译成YYYY-MM-DD)基本单元是字母,所以不需要embeddingattention计算首先利用RepeatVector复制状态s(输出层LSTM状态值),利用Concatenate将s和a(处理层LSTM输出值)组合,在利用两层densor和一个softmax求出atteition矩阵,利用Dot层进行矩阵乘法求出输出层LSTM的输入值全局变量# Defined shared layers as global variable原创 2020-05-26 00:33:08 · 195 阅读 · 0 评论 -
深度学习作业L5W2(2):Emojify!
任务:给定一句话,判断符合5个表情中的哪一个,属于一个多对一问题本次实验的embedding已经给出平均值策略把一句话的所有单词embedding加在一起求平均值,然后一个sortmax解决问题这样做没有利用到句子的顺序,而且一句话如果说了很多love但实际上是在骂人,那么可能会因为love比较多而选择较为积极的表情# GRADED FUNCTION: sentence_to_avgdef sentence_to_avg(sentence, word_to_vec_map): """原创 2020-05-26 00:22:09 · 216 阅读 · 0 评论 -
深度学习作业L5W2(1):Operations on word vectors
利用已经训练好的word embedding,进行判断词相似度、word analogy、以及除去性别歧视偏差等操作cosine相似度# GRADED FUNCTION: cosine_similaritydef cosine_similarity(u, v): """ Cosine similarity reflects the degree of similariy between u and v Arguments: u -- a wo原创 2020-05-26 00:09:13 · 192 阅读 · 0 评论 -
深度学习作业L5W1(3):Improvise a Jazz Solo with an LSTM Network
利用LSTM创作爵士歌曲数据处理题目已经为我们做好,输入X是(60, 30, 78)的矩阵,代表60个歌曲,每个歌曲分30个时间片,一个时间片对应78个音符中的一个。模型结构一个LSTM上面套一个softmaxLSTM的隐藏状态a为64个n_a = 64 reshapor = Reshape((1, 78)) # Used in Step 2.B of djmodel(), belowLSTM_cell = LSTM(n_a, return_s原创 2020-05-25 23:56:27 · 316 阅读 · 0 评论 -
深度学习作业L5W1(2):Character level language model - Dinosaurus land
目标:构建一个语言模型,用来生成恐龙名字。(本次实验的最小单元不是单词而是字母)下面截取题目要求我们实现的部分:处理梯度爆炸### GRADED FUNCTION: clipdef clip(gradients, maxValue): ''' Clips the gradients' values between minimum and maximum. Arguments: gradients -- a dictionary containing the原创 2020-05-25 23:39:13 · 222 阅读 · 0 评论 -
深度学习作业L5W1(1):Building your Recurrent Neural Network - Step by Step
利用numpy实现RNN、LSTM的前向传播和反向传播。主要是为了熟悉基本单元的流程RNN基本单元:# GRADED FUNCTION: rnn_cell_forwarddef rnn_cell_forward(xt, a_prev, parameters): """ Implements a single forward step of the RNN-cell as described in Figure (2) Arguments: xt -- your i原创 2020-05-25 23:27:50 · 202 阅读 · 0 评论 -
深度学习(21):seq2seq,注意力模型
seq2seqseq2seq在机器翻译等领域十分好用。我们将模型分成两部分,首先构造一个RNN充当encoder,将汉语句子依次作为输入,使其变成一个状态。然后构造一个RNN充当decoder,继承上面的初始状态,生成对应的英语文本。对于decoder部分,我们希望能够输出最有可能的翻译文本。我们直到如果直接选择贪心的方式,每次直接生成最大概率的单词,组合起来的结果可能不是最优的,因此往往采用beam search的方式进行搜索。beam search本质上是一个近似搜索算法,我们规定一个bea原创 2020-05-24 23:19:20 · 471 阅读 · 0 评论 -
深度学习(20):自然语言处理与词嵌入
word embedding之前我们一直用one-hot的形式来表示每一个词。但是随着单词集的扩充,one-hot的维度会越来越大,而且这样表示不能体现出词的关系。所以这里提出word embeddingword embedding本质上是抓取每个词的各种特征。相当于将m维的one-hot空间的单词映射到n维的特征空间中的值。特征空间满足:具有相似特征(例如水果)的词会聚在一起。具有相同关系的词会呈现出平行四边形的性质(男人、女人;国王、皇后的embedding向量偏差大致相同)训练得到word em原创 2020-05-24 20:33:08 · 380 阅读 · 0 评论 -
深度学习(19):循环序列模型
引言在之前我们学习的各种内容中(图像识别啊,分类问题啊),我们的输入在时间上没有先后顺序。然而在语音识别、自然语言处理当中,我们的各项输入是有先后顺序的。(例如句子当中词的先后顺序,声音来源的先后顺序)为了捕获这种时间顺序相关的特征,我们引入循环序列模型。one hot 表示在自然语言处理当中,如何对每一个单词进行表示是一个重要问题。在这里我们采用one-hot表示方法。假如我们训练的模型当中词汇量为3个,那么我们对三个单词分别编码为:[1, 0, 0][0, 1 ,0][0, 0, 1]可原创 2020-05-24 11:46:50 · 564 阅读 · 0 评论 -
深度学习作业L4W4(2)Art Generation with Neural Style Transfer
主题:风格转换下面只列出实验中需要编写的代码以及我认为的细节。计算内容代价函数# GRADED FUNCTION: compute_content_costdef compute_content_cost(a_C, a_G): """ Computes the content cost Arguments: a_C -- tensor of di...原创 2020-05-05 21:42:33 · 283 阅读 · 0 评论 -
深度学习作业L4W4(1):Face Recognition for the Happy House
主题:人脸识别triplet loss# GRADED FUNCTION: triplet_lossdef triplet_loss(y_true, y_pred, alpha = 0.2): """ Implementation of the triplet loss as defined by formula (3) Arguments: y_...原创 2020-05-05 21:31:26 · 159 阅读 · 0 评论 -
深度学习(18):人脸识别、风格转换
人脸验证 fave verification人脸验证 fave verification人脸验证指的是给出一张人脸图片,再给出一个目标ID,我们来确认图片是否属于这个ID人脸识别 face recognition人脸识别指的是给出一张人脸图片,已知一组ID,判断这张图片是否属于这一组ID中的一个任务难点:往往在实际应用中,我们数据库中一个人只有1张图片,数据较少。(训练时需要一个人有多个...原创 2020-05-05 21:14:42 · 530 阅读 · 0 评论 -
深度学习作业L4W3:Autonomous driving application - Car detection - v1
本次实验主要编写yolo网络得出结果后如何获取输出过滤注释写在代码里面# GRADED FUNCTION: yolo_filter_boxesdef yolo_filter_boxes(box_confidence, boxes, box_class_probs, threshold = .6): """Filters YOLO boxes by thresholding on ...原创 2020-05-05 15:30:12 · 263 阅读 · 0 评论 -
深度学习(17):目标检测
目标定位我们已经了解了简单的图像分类问题,即判断一个图片里有没有物体A。我们的神经网络输出往往只是1个数字,代表出现物体A的概率p。对于目标定位问题,我们除了要判断有没有物体A,还要圈出A的位置。这时候我们的输出就不应该只有p,还应该标注A的位置。因此对应目标定位问题,我们要同时输出:出现物体的概率、物体的位置信息、物体的种类信息。才能完成一个多目标定位。特征点检测有时候我们需要检测出图...原创 2020-05-05 15:02:10 · 569 阅读 · 0 评论 -
深度学习作业L4W2(2):Residual Networks - v1
利用keras实现一个残差网络模块构建# GRADED FUNCTION: identity_blockdef identity_block(X, f, filters, stage, block): """ Implementation of the identity block as defined in Figure 3 Arguments: ...原创 2020-05-05 07:34:19 · 216 阅读 · 0 评论 -
机器学习作业L4W2(1):Keras - Tutorial - Happy House v1
实验目的:熟悉keras(基于tensorflow的api)构建模型# GRADED FUNCTION: HappyModeldef HappyModel(input_shape): """ Implementation of the HappyModel. Arguments: input_shape -- shape of the images...原创 2020-05-05 07:29:02 · 207 阅读 · 0 评论 -
深度学习(16):深度卷积神经网络:实例探究
三个经典网络LeNet-5一个十分经典网络,处理任务是手写数字的识别。采用如下结构:输入层:32 * 32 * 1灰度图卷积层(C1):6个 5 * 5 过滤器,步长为1,得到28 * 28 * 6的输出池化层(S1):(平均池化)过滤器 2 * 2,步长为2, 输出14 * 14 * 6卷积层(C2):16个 5 * 5 过滤器,步长为1,得到10 * 10 * 16的输出...原创 2020-05-05 06:08:58 · 445 阅读 · 0 评论 -
深度学习作业L4W1(2):Convolution model - Application - v1
利用tensorflow实现卷积神经网络placeholder# GRADED FUNCTION: create_placeholdersdef create_placeholders(n_H0, n_W0, n_C0, n_y): """ Creates the placeholders for the tensorflow session. Argum...原创 2020-05-04 06:57:53 · 412 阅读 · 1 评论 -
深度学习作业L4W1(1):Convolution model - Step by Step - v1
本次实验主要是利用numpy实现卷积神经网络前向传播和反向传播的过程以加深理解。padding# GRADED FUNCTION: zero_paddef zero_pad(X, pad): """ Pad with zeros all images of the dataset X. The padding is applied to the height and wid...原创 2020-05-04 06:20:24 · 838 阅读 · 0 评论 -
深度学习(15):卷积神经网络
本文以图像分类为例简要介绍卷积神经网络的基本结构。卷积过滤器(核):过滤器是我们用来卷积的工具。对于一张图片,我们可以利用过滤器来抓取图片的某些特征。一个过滤器是一个 f * f 的矩阵, 其中的每一个元素都是可训练的参数。我们假设现在有一个6 * 6的灰度图,3 * 3的过滤器,那么卷积的过程如下:1.将过滤器覆盖在图片的左上角,计算9个位置对应元素的乘积并加和作为一个输出2.将过...原创 2020-05-03 19:34:34 · 483 阅读 · 0 评论 -
深度学习(14):对于贝叶斯误差的一点疑惑
贝叶斯误差是我们学习模型的天花板,我们用贝叶斯误差和训练集误差进行比较来确定我们是否还拥有可避免偏差,是否有优化的空间,以及是否过拟合。这里可以看出,只有承认训练集误差代表模型对真实数据的误差才能和贝叶斯误差进行比较。然而对于训练集的误差我有些疑惑(下面我仍按猫识别问题进行分析):1.我们假设我们的训练集是完全正确的。那么我们的训练集误差的确代表了真实误差。可是由于贝叶斯误差的存在,我们用尽...原创 2020-04-26 17:29:19 · 1066 阅读 · 0 评论 -
深度学习(13):机器学习策略(2)
误差分析当我们发现验证集和训练集误差比人工误差大很多时,我们认为此时存在可避免偏差,可以优化。这时候对产生误差的原因进行分析有助于我们的下一步迭代。例如对于猫图片分类器,通过观察验证集上的错误我们发现,80%的错误来源都是把狗看成了猫,这就启发我们针对狗进行优化(多找一些狗的图片、设计狗相关的算法等)可能会使我们的错误率降低80%。在分析误差时,我们可以并行的分析很多因素,也可能会找到共性的新...原创 2020-04-25 23:10:33 · 346 阅读 · 0 评论 -
深度学习(12):机器学习策略(1)
机器学习的过程是高度迭代的过程。我们往往需要定期对模型进行修改以提升模型性能。然而一次错误的决策可能使我们白白浪费几周甚至几个月的时间。因此机器学习策略很关键。机器学习的一般性步骤如下:1.在训练集上获得良好表现2.跟据dev验证集选择模型,并获得良好表现3.确定模型后在test测试集上获取良好表现4.在实际应用中获得良好表现。正交化正交化是指我们对模型的某一处修改,只应该影响模型单...原创 2020-04-25 09:58:38 · 471 阅读 · 0 评论 -
深度学习作业L2W3:Tensorflow Tutorial
本次实验了解Tensorflow这个强大的框架。使用Tensorflow框架的好处是,只需要编写前向传播和损失函数,反向传播框架会帮我们自动完成。一个tensorflow模型的大体结构:##参数形状设置W1 = tf.get_variable(...).....##训练集输入设置X=tf.placeholder(...)Y=......##前向传播计算图搭建tf.matmul...原创 2020-04-19 18:11:03 · 277 阅读 · 0 评论 -
深度学习(11):softmax回归
开门见山,softmax是logistic回归在多分类问题上的升级版多分类问题的y值对于二分类问题,我们用y=0或1就可以加以区分。对与C分类问题,我们用一个(C,1)的矩阵代表y值,例如对于一个3分类问题:[[0], [1], [0]]代表该物体属于第二类我们在logistic回归中,y_hat表示元素为1的可能性,因此对于softmax,输出的第i行数值代表着该物体为第i类的可能性。所以...原创 2020-04-19 17:51:05 · 118 阅读 · 0 评论 -
深度学习(10):Batch Norm Batch归一化
在之前的学习中,我们知道对于训练集X进行归一化有利于我们把代价函数从扁平拉圆,便于我们训练。那我们想一下,如果对每层神经网络的输出,我都搞一个归一化,是不是会提升我们的学习效果呢?Batch Norm技术就出现了实现方式对于之前的每个神经元,我们计算z=wTa_pre, a=g(z)。在Batch Norm中,对于每一层神经元:z=wTa_pre (没有b的原因是反正都要归一化...原创 2020-04-19 17:29:56 · 401 阅读 · 0 评论 -
深度学习(9):超参数调试
如果我们采用一个Adam梯度下降法,将会有学习率、网络层数、每层神经元个数、beta1、beta2等等超参数需要我们调整。面对这么多排列组合的可能性,我们需要采用适当的超参数选取策略。1.超参数重要性排列(吴恩达老师个人意见)t0:学习率t1:momentum的beta,隐藏层节点数、mini_batch大小t2:网络层数、learning_rate_decay(学习率衰减参数)t3(不...原创 2020-04-19 16:51:47 · 288 阅读 · 0 评论 -
深度学习作业L2W2:Optimization methods
本次实验主要介绍L2第二周的各项优化技术的实现。batch梯度下降简单的batch梯度下降更新公式为w = w - learning_rate*dw# GRADED FUNCTION: update_parameters_with_gddef update_parameters_with_gd(parameters, grads, learning_rate): """ ...原创 2020-04-18 23:51:59 · 231 阅读 · 0 评论 -
深度学习(8):Momentum RMSprop Adam 学习率衰减
指数加权平均对于一个序列a[1],a[2]…a[3]我们定义一个数组v[], 其中v[i]= beta*v[i-1] + (1-beta)*a[i]这个v就叫做a的指数加权平均值可以直观的理解为v[i]代表着a[i]之前的1/(1-beta)组数据的平均值,例如beta为0.9时,v[n]近似代表着v[n-9]-v[n]的平均值Momentum梯度下降法对于简单的梯度下降法我们如下更...原创 2020-04-18 23:30:52 · 965 阅读 · 0 评论 -
深度学习(7):Mini-batch梯度下降法
batch梯度下降法在前面的学习当中,对于神经网络的每次迭代,我们都是以整个训练集X为单元进行训练。这种训练方法也叫batch梯度下降法。由于跑完整个X后才能更新参数,当数据量较大时,每次迭代的时间会非常长。batch梯度下降法的代价函数一定会严格递减。为例减小每次跌打的时间,我们试图缩小每次迭代的数据量随机梯度下降法在这个方法中,我们每次迭代只训练一组数据,然后就更新参数。这样做的...原创 2020-04-18 22:50:50 · 537 阅读 · 0 评论 -
深度学习作业L2W1(3):Gradient Checking
本次实验主要涉及梯度检验。简单函数的梯度检验f(x)=theta*x# GRADED FUNCTION: forward_propagationdef forward_propagation(x, theta): """ Implement the linear forward propagation (compute J) presented in Figure 1 (...原创 2020-04-18 16:39:26 · 211 阅读 · 0 评论 -
深度学习作业L2W1(2):Regularization
本次实验着重介绍了L2正则化以及Dropout正则化没有正则化的表现此时发生了过拟合,边界出现了很多突起。测试集准确率低于训练集,方差较大L2正则化计算新的损失函数(利用np.sum消除for循环)# GRADED FUNCTION: compute_cost_with_regularizationdef compute_cost_with_regularization(A3,...原创 2020-04-18 16:28:43 · 299 阅读 · 0 评论 -
深度学习作业L2W1(1)Initialization
本次实验帮助我们了解合理的参数初始化对神经网络学习的影响这里只贴出要求我们写的代码以及我的心得体会0初始化在这个部分,我们把参数全初始化为0。然而通过前置知识我们知道,如果w相同,则会导致每一层的所有神经元在每次反向传播时梯度数值都相同,每次的参数更新也相同。相当于只有一个神经元,模型复杂度很低。况且如果w都是0,每次反向传播导数都会是0,相当于啥都没学所以这种方式完全不可取# GRA...原创 2020-04-18 16:14:07 · 162 阅读 · 0 评论 -
深度学习(6):神经网络中的梯度消失、梯度爆炸、梯度的数值逼近、梯度检验
梯度消失、梯度爆炸产生原因:随着神经网络的层数逐渐加深,参数的累乘导致参数对梯度的影响呈指数级别上升。我们的参数w若是过大,则会导致累乘后的梯度值非常大,参数更新反复横跳无法收敛。而如果参数w过小,则会导致梯度计算值过小使得参数更新缓慢不得收敛。解决方法:课上学习了通过合理的参数初始化缓解问题。直观上来看,Z[l]=W[l]A[l-1],上一层的神经元个数n[l-1]越大,我们应该让W[l...原创 2020-04-18 15:57:04 · 376 阅读 · 2 评论 -
深度学习(5):正则化
深层的神经网络往往会出现过拟合的现象,而浅层的神经网络又不能满足我们的要求。利用正则化,我们可以在不太影响偏差的基础上减少方差,更好的使用深层神经网络。这里直观理解正则化的作用、介绍两种课上提到的正则化方法以及介绍正则化输入:L2正则化在原先损失函数的基础上加上lambda*||w||22/(2m),即这里面L2范数的平方||w||22就是w中各项元素的平方和,lambda是一个超参数。...原创 2020-04-18 10:59:12 · 210 阅读 · 0 评论 -
深度学习(4):训练集、验证集、测试集 以及偏差和方差
在进行神经网络(以及各种机器学习模型)的训练中,我们需要对数据进行划分,以便于我们选择合适的超参数、评价模型的泛化能力。训练集我们利用训练集来进行参数训练(即前面提到的前向传播、反向传播、参数更新的过程)。验证集我们选取不同的超参数通过训练集训练出不同的模型。将这些模型应用在验证集上以选择最合适的超参数。测试集在确定好合适的超参数后,我们将模型应用在测试集上以判断模型的泛化能力。要注...原创 2020-04-18 10:04:11 · 2838 阅读 · 0 评论 -
深度学习作业L1W4:深层神经网络
本周的作业分为两部分,第一部分是构建一个深层神经网络的模板,第二部分是进行一个识别猫图片的实践。我先进行我的经验总结,再贴出实验代码。构建一个神经网络模型的步骤:1.进行数据处理,如将图片拍扁2.进行参数初始化(注意w应该进行随机初始化)3.构建前向传播:利用向量化公式,同时注意保留cache,以方便反向传播的计算。4.计算损失函数:方便我们直观的判断损失函数的下降过程,以调整超参数...原创 2020-04-12 17:26:44 · 234 阅读 · 0 评论 -
深度学习作业L1W3:Planar data classification with one hidden layer
本次实验构建一个单隐层神经网络,实现一个二维平面点集二分类问题。点集的分布如下:观察可以发现这个数据不是线性可分的(不能用一条直线把它们分开)用传统的logistic回归,我们发现结果如下:可见线性分类方法对于这种线性不可分的数据处理不好,正确率只能达到47%接下来构建我们的神经网络:参数初始化# GRADED FUNCTION: initialize_parametersd...原创 2020-04-12 08:41:53 · 307 阅读 · 0 评论 -
深度学习(3):神经网络 前向传播反向传播向量化
这一次我们来更加详细地了解一下神经网络神经网络结构神经网络的基本单元是神经元z=wTx+ba = g(z)(z和a的表示会在下面用到)每个神经元对输入进行线性求和,随后调用激活函数(一个非线性函数)进行输出而一个神经网络的结构如下图所示输入部分称为输入层输出值称为输出层中间的神经元由于其参数对于训练集不可见,因此成为隐藏层本次我们介绍的就是一个简单的两层神经网络前向传播...原创 2020-04-11 23:46:10 · 572 阅读 · 0 评论