斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时24&&25

课时24 深度学习开源库使用介绍(上)

Caffe

被用于重新实现AlexNet,然后用AlexNet的特征来解决其他事情

用C++书写的,可以去GitHub上面读取源代码

主要四个类:

Blob可以存你的权重,像素值,激活等,是n维的张量,就像NumPy一样,他实际上内部有四个n维张量,这个张量有一个数据的版本,用于存储原始未处理的数据。剩下三个分别有diffs,GPU,CPU;

层是一种与你作业中所需要实现的功能相似的功能,会接收输入的Blob,caffe管这些输入的Blob称为底端输入,然后生成。输出的Blob,caffe称其为顶端Blobs。其原理就是,这些层会接收指针指向底端Blobs,这些Blobs中已经有了数据。他们还会收到指向顶端Blobs的指针,他会向前传递,最终会将数据填满在顶端Blobs的数值中。在向回传递时,这些层会实现梯度算法。他们会接收到指向顶端Blobs的指针,Blob中存储了梯度和激活值,他还会接收一个指向底部Blobs的指针,其中已经存满了梯度。问题是:没有一个很好的列表来完整的写出所有层的种类

网的作用就是把许多的层连接在一起。Net其实就是层额有向非循环图,其作用就是按正确的顺序执行层的向前和向后的方法

求解器的功能就是进入Net中,前后地用数据来运行Net,更新网络中的参数,进行检查,并把数据从检查点恢复等一系列的事情。

使用caffe不用书写代码,但要遵循四个步骤:

Torch

必须用lua来写,lua语言是专门为前入睡设备设计的,他运行得非常高效。缺点是处理字符串等这类的工作有时候会显得很笨重,并且数组下标是从1开始。

在torch里,我们并不需要区分层和网络,所有的一切只是一个模型而已,整个神经网络是一个模型,每一层也是一个模型。模型又是用lua定义的类,在实际使用的时候用的是tensor API

linear就是lua的全连接层

顺序容器就是有很多模型,每一个都把前一个的输出作为输入,进入一个线性的堆栈

concat表:你想要对同一个输入执行两个不一样模型,这个表支持你这样做,你会得到一个清单的结果

并行表:如果你有一个清单的输入,你想要对每一个输入都应用不一样的模型,你可以使用并行表

工作流程:

最大的弊端是对RNN无能为力

课时25 深度学习开源库使用介绍(下)

Python是一种解释性语言,这就是为什么他循环效果很差,因为需要进行大量的内存分配和一些其他相关的事情

Theano

他全是关于计算图的,计算图能很好地把复杂的结构整合到一起

为了训练的不同之处在于我们可以计算微分,这里dw1,dw2是损失函数关于w1和w2的梯度,theano可以让你求得图中任一部分关于另一部分的梯度,然后把他们作为新的变量引入计算图中

实现方式叫做共享变量,他是网络中的另一部分,实际上是计算图中存在的值,每一次调用值都不变

也支持多GPU

事实上Keras还会使用Tensorflow作为后端

theano有预训练的模型,Lasagne有一个模型组,有着你可能需要的大量不同模型结构

缺点:对于快速迭代的模型这不是很理想的;他的API比torch要胖一些,必须在后台完成这些复杂的事情;预训练的模型可能没有caffe和torch那么好

TensorFlow

采用了操作图的思想,并在此基础上添加了所有的东西

one-hot(独热):在任务中做的softmax损失函数,y总是一个整数,告诉你所需要是哪个,在一些框架中他不是整数,他是一个向量

优点:将任务分配到多个设备,在TensorFlow中,每个设备的输出都是计算图谱中的一个检查点

缺点:如果你想做一些创新,而且无法用计算图谱实现,则可能会遇到麻烦,但是使用torch的话,则可以做任何创新;没有预训练好的模型

假设我们想要提取AlexNet或者VGG-Net的特征,我们会选择使用Caffe;

如果我们想要对AlexNet进行调优,选择caffe

如果我们要做调优图片截取,我们需要预训练好的模型还有RNN,则我们可以选择torch或者lasagna

如果要进行场景分割,我们先要将每个像素点分割开来,首先我们要读取一张输入图片,我们不想要对图片进行标注,而是希望获取独立的每个像素点的标签,需要一个预训练好的模型,所以使用caffe或者torch

对于物体检测,需要预训练好的模型,还可能要做一些奇特的创新,所以caffe+Python或者torch

时间: 2024-10-12 14:03:54

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时24&&25的相关文章

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时26&&27

课时26 图像分割与注意力模型(上) 语义分割:我们有输入图像和固定的几个图像分类,任务是我们想要输入一个图像,然后我们要标记每个像素所属的标签为固定数据类中的一个 使用卷积神经,网络为每个小区块进行分类,对在区块的中间打上标签,对图像的全部区块分类完毕,我们就可以得到每个像素所对应的标签,这个操作实际上非常耗时,因为一张图片将会被分割非常多的小块. 如果这些神经网络具有相关的结构,通过这个图像金字塔方法的话,这些图像的输出将会有不同的感受野. 语义分割的迭代精化 我们有一个输入图像,他们被分割

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时8&&9

课时8 反向传播与神经网络初步(上) 反向传播在运算连路中,这是一种通过链式法则来进行递推的计算过程,这个链路中的每一个中间变量都会对最终的损失函数产生影响. 链式法则通常包含两部分,局部梯度和后一层的梯度相乘 前向和反向花费的时间是基本一样的. 大的函数也可以直接视作一个整体计算梯度 当局部梯度非常容易求得时,你可以把这部分表达式看作一整个S门 加法:梯度分配器:所以无论何时当你有一个加法运算时,他会分配相等的梯度值. 最大值门:一个梯度路由,他的工作方式是,认为比较大的输入梯度为1,比较小的

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时12&&13

课时12 神经网络训练细节part2(上) 训练神经网络是由四步过程组成,你有一个完整的数据集图像和标签,从数据集中取出一小批样本,我们通过网络做前向传播得到损失,告诉我们目前分类效果怎么样.然后我们反向传播来得到每一个权重的梯度,这个梯度告诉我们如何去调整每一个权重,最终我们能够更好的分类图片. 为什么要使用激活函数? 如果在整个的神经网络中不使用激活函数,你的网络的分类能力基本等同于一个线性分类器,所以激活函数是相当关键的.他提供了所有的方法,你可以他用来存储数据 BN使得网络的训练更加健壮

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时14&&15

课时14 卷积神经网络详解(上) CNN处理的是一些数据块,在这之间有很多层,一系列的层将输入数据变换为输出数据,所以完成操作的中间量不仅是NN时候讲的那些向量,而是立体结构,有宽,高和深度,在整个计算过程中要保持这些三维特征.这里的深度指的是一个数据体的第三个维度. 工作流程 我们得到一些数据,作为网络的输入,在CNN中我们有这样的滤波器,假设现在我们只有一个滤波器,这些滤波器空间维度很小,我们用这个滤波器来和输入图像做卷积运算.这里的卷积运算,意思是说滤波器要在这个图像的空域范围内全部位置滑

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时6

课时6 线性分类器损失函数与最优化(上) 多类SVM损失:这是一个两分类支持向量机的泛化 SVM损失计算了所有不正确的例子,将所有不正确的类别的评分,与正确类别的评分之差加1,将得到的数值与0作比较,取两者中的最大值.然后将所有的数值进行求和.用平均值来代替不会影响结果. 这些评分都是无标度的,因为我们可以随便选择W,让它成比例地增大或者减小,然后分数也随之成比例地变化.所以分数的大小和它的量度的选择紧密相关,将安全系数的值设为1在某种程度上来说只是一个随意的选择. 在实际的数据集中使用这个损失

深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全

原文地址:Image Completion with Deep Learning in TensorFlow by Brandon Amos 原文翻译与校对:@MOLLY && 寒小阳 ([email protected]) 时间:2017年4月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/52665396 声明:版权所有,转载请联系作者并注明出 简介 第一步:将图像理解为一个概率分布的样本 你是怎样补全缺失信息的呢? 但是怎

斯坦福大学深度学习与自然语言处理第一讲:引言

斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing ,授课老师是青年才俊Richard Socher,他本人是德国人,大学期间涉足自然语言处理,在德国读研时又专攻计算机视觉,之后在斯坦福大学攻读博士学位,拜师NLP领域的巨牛 Chris Manning和Deep Learning 领域的巨牛 Andrew Ng ,其博士论文是< Recursive Deep Le

斯坦福大学深度学习与自然语言处理第一讲

我学习自然语言是从Christopher D.Manning的统计自然语言处理基础这本书开始的,很多文本分析也是应用统计方法,或者机器学习的方法,而近年来深度学习逐渐渗入各个领域,其在自然语言处理领域中也取得了令人惊叹的效果,这成功的引起了我的重视,决定学习一下.何其所幸,让我找到了斯坦福大学深度学习与自然语言的课程,深得我心啊,所以打算好好学习一下,鉴于我爱自然语言处理中有相关课程的slides,我就直接复制粘贴了,接下来打算做的工作是对该课程中推荐阅读的部分论文做一些笔记.本人才疏学浅,专业

斯坦福大学深度学习与自然语言处理第二讲

第二讲:简单的词向量表示:word2vec, Glove(Simple Word Vector representations: word2vec, GloVe) 转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn 本文链接地址:斯坦福大学深度学习与自然语言处理第二讲:词向量 推荐阅读材料: Paper1:[Distributed Representations of Words and Phrases and their Compositionality]]