2019独角兽企业重金招聘Python工程师标准>>>

1.首先caffe 安装我就不解释了 如果有人安装不会的话 可以加我qq 1050316096 ,我会按照使用方式来介绍,首先打开caffe 的github开源项目

https://github.com/BVLC/caffe  caffe 有一个缺点就是依赖的库太多,所以安装理解可能比较麻烦,好处就是网络定义使用google的 protoBuf方式 以及 层定义之间很明确 清晰。

首先我来讲一下 深度学习怎么来的。

普通的 普通的模拟神经元 其实 就是 y=wx+b 多个来源 也就是权重 W 以及 偏重 B 参数的调整,于是 就可以通过计算LOSS损失函数 来控制梯度下降。所谓梯度下降 就是调整参数让他往空间斜率的方向跑。 OK ,于是问题来了 ,这其实就是一个线性回归模型

后面人们发现可以通过多层的神经元相互组合 形成多层神经元NN 进行训练,通过调整隐藏神经元从而达到你所需要的结果

其实这里面大体是一样的

OK 下面是国外一个教程的截图,其实就是每一层的参数都可以用上一层wx+b来代替 ,最后转换成第一层的wx+b 与最后一层的h(x)的问题,求解的问题,于是引入了loss损失函数来保证梯度下降。

我们知道 每一层的输出 其实就是一个wx+b 然后层层带入,因为我们可以用第一层的表示后面的相应的多层输入,我们也能知道结果,上图的H(X) 然后我们就能得到一个用第一层的wx+b表示的 公司,所以最后求数学上的损失 以及 控制梯度下降 都是转换成wx+b的问题,最后其实跟w x b相关的一个函数,我们知道现实中数据 不是线性可分的 有很多,线性回归问题,不能直接wx+b的线性回归模型来求解,于是人们采用多层模型 嵌套,是的线性不可分的问题,像切蛋糕,一样 类似于SVM, ,在空间平面上 切 切 切 ,是的能够求解这类问题,后面,人们发现引入激活函数,调整参数 会有更好的收敛性而且不容易陷入局部最优解 梯度下降,比如下到半山腰。

常用的激活函数有sigol  还有tanh 这些数学 就是一些数学上的曲线收敛函数、不过relu的收敛性比他们效果更好,所以现在深度学习 在激活层上都一般采用relu

我下面说说我的理解 。深度学习 在 上面的多层网络基础上 ,实现了整理梯度下降 ,每一次都有BP反馈,以及前向更改,以及批次量的训练 以及 xvier的 初始化权重 这样来保证整理上梯度下降 而不会陷入over fitting,另外计算机速度越来越快,所以深度学习遍发展起来了。

下面我们讲一讲caffe 的网络结构情况 首先看到caffe下面的

我们可以看到 有三个prototxt文件,因为caffe 定义网络是protoBuf定义的协议定义在src/caffe/proto/caffe.proto 这个文件里面,然后prototxt定义网络的层定义,当运行时候会读取txt 反系列化proto解析,并初始化定义文件里面的每一层每一层分布,初始化网络 然后就开始训练。首先看看solver文件。他是入口,定义了网络的一些训练参数

这里面最注意到的是net 里面的train_val.pototxt 他是用来做训练测试时候的运行网络,但是实际的网络 后面部署 使用的网络是deploy.txt 也就是说,

这2个文件 deploy 与 train_val有一些区别,

1.因为是train_val 所以 有测试 有训练 ,你也可以分开2个文件来写,写成一个文件 需要使用

include{

phase:Train/Test

}

这是表明该网络是在什么时候使用,是train/Test 还有就是他外部有个最大的最外层的layer  用来作为label 校验 以及 input输入的最底层网络输入,所以因为他是用来校验调整,所以 一般在后面会看到 有两个bottom 以及 top 而且 SoftMax分类器 是SoftMaxLoss 这样 可以让层经过这个时候有个BP反馈。 这是一些细微的差别。然后其他方面大体一致。因为deploy只是一个部署模型model 使用时候的网络文件,当然不会有这些loss 以及 label 测试 等相关输入以及输出。

理解了这三个文件之后 ,我们来看看一个caffe的网络的layer构成组成 。

通过type定义层的类型

下面讲一下 几个基本常用的层的理解 。详细所有的可以看看我下面的链接里面,有详细的介绍。

1.convetion 卷积层 ,因为图像有局部特征 可以共享参数,所以可以通过局部特征特性来减少输入维度 以及隐藏的参数。主要原理是,一个图像WXH的矩阵 可以转换成 一个 卷积核个数以及 图像矩阵的卷积核抽取的向量展开成的一维特征的矩阵,AXB 然后

每一张图像能抽取C个矩阵,这个可以算出来一个BxC的特征,然后矩阵剩法, 至于GPU 就是在这些矩阵方面运行非常快 加速了所以GPU训练比较快。

这样可以得到一个AXC的特征 这就是做卷积的大概的结果。

2,pool 池化层,为了防止overfitting问题,类似于图像的金字塔法则 ,用平均 最大 等来代替卷积特征的 ,这样可以进一步缩小 输出的抽象特征

3. relu激活层 ,一般都是relu 有较好的速度与性能 ,主要是原子层上的一层参数的调整。

4. softmax分类器loss损失层 ,主要做多元分类 ,、

5.全连接层 主要把特征多维变成NX1X1X1 的输出特征,其实就是以前神经网络的NN一样,

然后多层网络之间 上一层输出 作为下一层的输入,

如果有实际上不理解的 可以一起交流。这一方面 http://caffe.berkeleyvision.org/tutorial/layers.html

这是一个很好的教程,有哪些层 ,以及 这些层的原理 作用 都有详细的介绍 我觉得非常好的教程了。

这里我们大概知道了层的定义

所以有卷积层C 就叫做CNN 如果全部是连接层 以及 其他relu 以及 dropdown 等等 就叫做DNN

如果每一层之间向下forward 时候 以及 BP向上 会考虑过去几层的权重 以及 相关loss 数据等等 就叫做 RNN

如果每一层上一层输出的b 保留 交给下一层 计算进去 就叫做深度残差网络、。resnet

了解了上面的需求后,我们就可以参考 caffe一些开源model 来构建自己的网络定义了。并使用到实际中。

我是一个java工程师 ,并不是专业学计算机深度学习研究的 。不能理解内部的完整的数学算法,博士教授研究的东西 数学也不够好,所以这只是我的一个理解,所以有什么不足 很见谅。但是大家可以入门 理解下。

先做到会使用就行了 ,慢慢的深入研究。会使用了 就能够运用到实际中来。 我现在比如用LSTM 来写诗句,用CNN来做训练 图像 理解。

这是运行的截图 。注意到里面的shape么 就是每一层 输入输出的NXD向量

这是结果

下面的是测试结果

转载于:https://my.oschina.net/yilian/blog/651348

深度学习Caffe 入门理解使用教程相关推荐

  1. 【深度学习】入门理解ResNet和他的小姨子们(一)---ResNet

    2015年由He KaiMing 大神 提出的ResNet现在是一种经典模型.在这之前,虽然VGG的深度已经高达19层了,但是152层的ResNet真的让我们目瞪口呆. ResNet这篇文章则是CVP ...

  2. caffe模型文件解析_深度学习 Caffe 初始化流程理解(数据流建立)

    深度学习 Caffe 初始化流程理解(数据流建立) 之前在简书的文章,搬迁过来 ^-^ 本文是作者原创,如有理解错误,恳请大家指出,如需引用,请注明出处. #Caffe FeatureMap数据流的建 ...

  3. 深度学习小白入门教程-基础环境篇

    深度学习小白入门教程-基础环境篇 如有图片显示失败,请回小主主页查看~ Anaconda 安装包下载方式一:官网(科学上网比较慢,不推荐) 安装包下载方式二:清华镜像(推荐) 具体安装步骤(跟着箭头来 ...

  4. 图深度学习,入门教程七,残差多层图注意力模型

    深度学习还没学完,怎么图深度学习又来了?别怕,这里有份系统教程,可以将0基础的你直接送到图深度学习.还会定期更新哦. 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神 ...

  5. 150页书籍《PyTorch 深度学习快速入门指南》附PDF电子版

    为什么说是极简教程,首先本书只涵盖了150页.内容比较精简,特别适合作为 PyTorch 深度学习的入门书籍.为什么这么说呢?因为很多时候,一份厚重的书籍往往会削弱我们学习的积极性,在学习一门新的语言 ...

  6. 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

    原文:http://www.techweb.com.cn/news/2017-07-31/2566452.shtml 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目 2017. ...

  7. 运用深度学习教机器人理解自然语言

    运用深度学习教机器人理解自然语言 2016-08-16 16:33 转载 CSDN 1条评论 雷锋网按:本文作者Jonathan是21CT的首席科学家.他主要研究机器学习和人工智能如何使用在文本和知识 ...

  8. 【机器学习】机器学习和深度学习概念入门

    机器学习和深度学习概念入门(上) 作者:谭东  来源:机器学习算法与自然语言处理 目  录 1   人工智能.机器学习.深度学习三者关系 2   什么是人工智能 3  什么是机器学习 4  机器学习之 ...

  9. 《Keras深度学习:入门、实战与进阶》之印第安人糖尿病诊断

    本文摘自<Keras深度学习:入门.实战与进阶>. 1.数据理解 本节使用Pima Indians糖尿病发病情况数据集.该数据集最初来自国家糖尿病/消化/肾脏疾病研究所.数据集的目标是基于 ...

最新文章

  1. 目前python主要应用领域零售_python3读取HDA零售企业数据(一)
  2. php安装问题_PHP安装十大经典问题
  3. R 学习 - 富集分析泡泡图回应
  4. JAVA xml转dom_如何在Java中将String转换为DOMSource?
  5. TP5路由知识简单个人汇总
  6. eclipse中文汉化操作 2020-12
  7. Java开源大全 网站
  8. java 切图 软件_Java 切图
  9. python绘制ws小世界网络图形
  10. (附源码)node.js基于vue框架潮牌官网设计与实现 毕业设计 010955
  11. 使用pygame制作贪吃蛇小游戏
  12. Web端让电脑说话,发音,类似闹钟
  13. 程序员应该选择干前端还是干后端呢?
  14. 岁月温柔-17 妈妈在市第一人民医院ICU第七天
  15. coreldraw sp2精简版 x4_coreldraw下载
  16. 优秀的Android开源框架(持续更新)
  17. 建议Amazon卖家选择轻巧产品的原因
  18. CV15 轮廓检测:霍夫变换原理及应用
  19. 从IT研发人员离职工作交接想到的
  20. 怎样在Mathtype中输入空格及常用快捷键

热门文章

  1. 界面设计02 - 零基础入门学习Delphi43
  2. windows下编译64位程序时没有没_WIN32定义
  3. compilation targetFrameworkMoniker=.NETFramework,Version=v4.0
  4. 【Kafka】kafka的安装以及部署的详细描述
  5. ++操作你还在使用加锁去保证线程的安全吗?确定不了解一下CAS机制?
  6. BFS广度优先算法, DFS深度优先算法,Python,队列实现,栈实现
  7. jmeter脚本写个小demo(html论坛自动发帖、json龙果学院-前后端分离)
  8. Spring MVC的转发与重定向
  9. 06-06 Jenkins 邮件报警机制
  10. android 判断fragment类型,Android 判断当前Fragment是否可见(Visible)