视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层. 1.Convolution层: 就是卷积层,是卷积神经网络(CNN)的核心层. 层类型:Convolution lr_mult: 学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr.如果有两个lr_mult, 则第一个表示权值的学习率,第二个表示偏置项的学习率.一般偏置项的学习率是权值学习率的两倍. 在后面的…
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision Layers)的参数,视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层. 1.Convolution层: 就是卷积层,是卷积神经网络(CNN)的核心层. 层类型:Convolution lr_mult: 学习率…
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision Layers)的参数,视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层. 1.Convolution层: 就是卷积层,是卷积神经网络(CNN)的核心层. 层类型:Convolution lr_mult: 学习率…
学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一个测试程序 Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn Caffe学习系列(2):数据层及参数 Caffe学习系列(3):视觉层(Vision Layers)及参数 Caffe学习系列(4):激活层(Activiation Layers)及参数…
caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分类,但样本量太小,可能只有几百张,而一般深度学习都要求样本量在1万以上,因此训练出来的model精度太低,根本用不上,那怎么办呢? 那就用caffe团队提供给我们的model吧. 因为训练好的model里面存放的就是一些参数,因此我们实际上就是把别人预先训练好的参数,拿来作为我们的初始化参数,而不需…
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载imagenet图片来训练.但是我没有下载,一个原因是注册账号的时候,验证码始终出不来(听说是google网站的验证码,而我是上不了google的).第二个原因是数据太大了... 我去网上找了…
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载imagenet图片来训练.但是我没有下载,一个原因是注册账号的时候,验证码始终出不来(听说是google网站的验证码,而我是上不了google的).第二个原因是数据太大了... 我去网上找了…
Caffe学习系列——工具篇:神经网络模型结构可视化 在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py 本文将就这两种方法加以介绍 1. Netscope:支持Caffe的神经网络结构在线可视化工具 Netscope是个支持prototxt格式描述的神经网络结构的在线可视工具,网址:  http://ethereon.github.io/netscope/quickstart.html  它可以用来可…
Caffe学习系列(12):训练和测试自己的图片   学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载imagenet图片来训练.但是我没有下载,一个原因是注册账号的时候,验证码始终出不来(听说是google网站的验证码,而我是上不了goo…
上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的” Images" 按钮 ,选择“classification" 在打开页面右下角可以看到,系统提供了一个caffe model,分别为LeNet, AlexNet, GoogLeNet, 如果使用这三个模型,则所有参数都已经设置好了,就不用再设置了. 在下面,系统为我们列举出了本机所带的显卡,我们可以选择其中一块…
经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http://www.cnblogs.com/denny402/tag/caffe/ 也许有人会觉得比较复杂.确实,对于一个使用惯了windows视窗操作的用户来说,各种命令就要了人命,甚至会非常抵触命令操作.没有学过python,要自己去用python编程实现可视化,也是非常头痛的事情.幸好现在有了nvidi…
视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层. 这里介绍下conv层. layer { name: "conv1" type: "Convolution" bottom: "data" top: "conv1" param { lr_mult: 1 //学习率系数,最终的学习率为base_lr*lr_mult } param {…
本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置. 1.softmax-loss softmax-loss层和softmax层计算大致是相同的.softmax是一个分类器,计算的是类别的概率(Likelihood),是Logistic Regression 的一种推广.Logistic Regression 只能用于二分类,而softmax可以用于多分类. softmax与softm…
本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置. 1.softmax-loss softmax-loss层和softmax层计算大致是相同的.softmax是一个分类器,计算的是类别的概率(Likelihood),是Logistic Regression 的一种推广.Logistic Regression 只能用于二分类,而softmax可以用于多分类. softmax与softm…
深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成.Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型.它将所有的信息数据定义为blobs,从而进行便利的操作和通讯.Blob是caffe框架中一种标准的数组,一种统一的内存接口,它详细描述了信息是如何存储的,以及如何在层之间通讯的. 1.blob Blobs封装了运行时的数据信息,提供了CPU和GPU的同步.从数学上来说, Blob就是一个N维数组.它是caffe中的数据操作基本单位…
通过前面的学习,我们已经能够正常训练各种数据了.设置好solver.prototxt后,我们可以把训练好的模型保存起来,如lenet_iter_10000.caffemodel. 训练多少次就自动保存一下,这个是通过snapshot进行设置的,保存文件的路径及文件名前缀是由snapshot_prefix来设定的.这个文件里面存放的就是各层的参数,即net.params,里面没有数据(net.blobs).顺带还生成了一个相应的solverstate文件,这个和caffemodel差不多,但它多了…
在深度学习的实际应用中,我们经常用到的原始数据是图片文件,如jpg,jpeg,png,tif等格式的,而且有可能图片的大小还不一致.而在caffe中经常使用的数据类型是lmdb或leveldb,因此就产生了这样的一个问题:如何从原始图片文件转换成caffe中能够运行的db(leveldb/lmdb)文件? 在caffe中,作者为我们提供了这样一个文件:convert_imageset.cpp,存放在根目录下的tools文件夹下.编译之后,生成对应的可执行文件放在 buile/tools/ 下面,…
在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的.从bottom得到一个blob数据输入,运算后,从top输入一个blob数据.在运算过程中,没有改变数据的大小,即输入和输出的数据大小是相等的. 输入:n*c*h*w 输出:n*c*h*w 常用的激活函数有sigmoid, tanh,relu等,下面分别介绍. 1.Sigmoid 对每个输入数据,利用sigmoid函数执行操作.这种层设置比较简单,没有额外的参数. 层类型:Sigmoid 示例: layer { n…
在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的.从bottom得到一个blob数据输入,运算后,从top输入一个blob数据.在运算过程中,没有改变数据的大小,即输入和输出的数据大小是相等的. 输入:n*c*h*w 输出:n*c*h*w 常用的激活函数有sigmoid, tanh,relu等,下面分别介绍. 1.Sigmoid 对每个输入数据,利用sigmoid函数执行操作.这种层设置比较简单,没有额外的参数. 层类型:Sigmoid 示例: layer { n…
如何在Caffe中增加一层新的Layer呢?主要分为四步: (1)在./src/caffe/proto/caffe.proto 中增加对应layer的paramter message: (2)在./include/caffe/***layers.hpp中增加该layer的类的声明,***表示有common_layers.hpp, data_layers.hpp, neuron_layers.hpp, vision_layers.hpp 和loss_layers.hpp等: (3)在./src/c…
要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成.所有的参数都定义在caffe.proto这个文件中.要熟练使用caffe,最重要的就是学会配置文件(prototxt)的编写. 层有很多种类型,比如Data,Convolution,Pooling等,层之间的数据流动是以Blobs的方式进行. 今天我们就先介绍一下数据层. 数据层是每个模型的最底层,是模型的入口,不仅提供数据的输入,也提供数据从B…
主要包括softmax-loss层(与softmax有区别),全连接层(Inner Prouduct),accuracy层,reshape层, Dropout层. softmax: layers { bottom: "cls3_fc" top: "prob"//概率似然值 name: "prob" type: “Softmax" } accuracy layer { name: "accuracy" type: &q…
http://www.cnblogs.com/denny402/p/5070928.html 要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成.所有的参数都定义在caffe.proto这个文件中.要熟练使用caffe,最重要的就是学会配置文件(prototxt)的编写. 层有很多种类型,比如Data,Convolution,Pooling等,层之间的数据流动是以Blobs的方式进行. 今天我们就…
一个模型由多个层构成,如Data,conv,pool等.其中数据层是模型的最底层,是模型的入口. 提供数据的输入,也提供数据从Blobs转换成别的格式进行保存输出还包括数据的预处理(如减去 均值, 放大缩小, 裁剪和镜像等).数据源来自高效的数据库(如LevelDB和LMDB),或者hdf5 文件和图片格式文件等(效率低). layer { name: "cifar"//该层的名称,随意取 type: "Data" //层类型,Data表示LMDB或LevelDB…
参考:http://www.cnblogs.com/denny402/p/5072507.html 主要介绍了各个激活函数.…
solver算是caffe的核心的核心,它协调着整个模型的运作.caffe程序运行必带的一个参数就是solver配置文件.运行代码一般为 # caffe train --solver=*_slover.prototxt 在Deep Learning中,往往loss function是非凸的,没有解析解,我们需要通过优化方法来求解.solver的主要作用就是交替调用前向(forward)算法和后向(backward)算法来更新参数,从而最小化loss,实际上就是一种迭代的优化算法. 到目前的版本,…
前言: 通过检索论文.书籍.博客,继续学习Caffe,千里之行始于足下,继续努力.将自己学到的一些东西记录下来,方便日后的整理. 正文: 1.代码结构梳理 在终端下运行如下命令,可以查看caffe代码结构,我将其梳理了一下: root@ygh:/home/ygh/caffe# tree -d . ├── build -> .build_release //编译结果存放处,子目录结构与主目录类似 ├── cmake //使用CMake编译时会用到 │   ├── External │   ├──…
caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较强大的东西:ipython notebook, 现在的最新版本改名叫jupyter notebook,它能将python代码搬到浏览器上去执行,以富文本方式显示,使得整个工作可以以笔记的形式展现.存储,对于交互编程.学习非常方便. python环境不能单独配置,必须要先编译好caffe,才能编译py…
对于blob.h文件. 先看成员变量.定义了6个保护的成员变量,包括前.后向传播的数据,新.旧形状数据(?), 数据个数及容量. 再看成员函数.包括构造函数(4个参数),reshape(改变blob形状),以及很多inline函数. #ifndef CAFFE_BLOB_HPP_ #define CAFFE_BLOB_HPP_ #include <algorithm> #include <string> #include <vector> #include "…
在某社区看到的回答,觉得不错就转过来了:http://caffecn.cn/?/question/123 Caffe从四个层次来理解:Blob,Layer,Net,Solver. 1.Blob Caffe的基本数据结构,用四维矩阵Batch*Channel*Height*Width表示,存储了包括神经元的 激活值.参数.以及相应的梯度(dW,db).其中包含有cpu_data.gpu_data.cpu_diff.gpu_diff. mutable_cpu_data.mutable_gpu_dat…