之前用deploy.prototxt 还原train_val.prototxt过程中,遇到了坑,所以打算总结一下 本人以熟悉的LeNet网络结构为例子 不同点主要在一前一后,相同点都在中间 train_val.prototxt 中的开头 看这个名字也知道,里面定义的是训练和验证时候的网络,所以在开始的时候要定义训练集和验证集的来源 name: "LeNet" layer { name: "mnist" type: "Data" top: &quo…
本文以CaffeNet为例: 1. train_val.prototxt  首先,train_val.prototxt文件是网络配置文件.该文件是在训练的时候用的. 2.deploy.prototxt 该文件是在测试时使用的文件. 区别: 首先deploy.prototxt文件都是在train_val.prototxt文件的基础上删除了一些东西,所形成的. 由于两个文件的性质,train_val.prototxt文件里面训练的部分都会在deploy.prototxt文件中删除. 在train_v…
神经网络中,我们通过最小化神经网络来训练网络,所以在训练时最后一层是损失函数层(LOSS), 在测试时我们通过准确率来评价该网络的优劣,因此最后一层是准确率层(ACCURACY). 但是当我们真正要使用训练好的数据时,我们需要的是网络给我们输入结果,对于分类问题,我们需要获得分类结果,如下右图最后一层我们得到 的是概率,我们不需要训练及测试阶段的LOSS,ACCURACY层了. 下图是能过$CAFFE_ROOT/python/draw_net.py绘制$CAFFE_ROOT/models/caf…
一,train_val.prototxt name: "CIFAR10_quick" layer { name: "cifar" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { # mirror: true # mean_file: "examples/cifar10/mean.bin…
solver是caffe的核心. net: "examples/mnist/lenet_train_test.prototxt" test_iter: 100 test_interval: 500 //每训练500次进行一次测试 base_lr: 0.01 momentum: 0.9 type: SGD weight_decay: 0.0005 lr_policy: "inv" gamma: 0.0001 power: 0.75 display: max_iter:…
1.开头不同 对train_val.prototxt文件来说,开头部分定义训练和测试的网络及参数 对deploy.prototxt文件来说,开头部分定义实际运用场景的配置文件,其参数不定义数据来源,仅定义数据输入的格式大小 如下: train_val.prototxt deploy.prototxt…
caffe在 .\examples\mnist文件夹下有一个 lenet.prototxt文件,这个文件定义了一个广义的LetNet-5模型,对这个模型文件逐段分解一下. name: "LeNet" //网络的名称是LeNet layer { //定义一个网络层 name: "data" //定义该网络层的名称为 data type: "Input" //定义网络层的类型是 输入层 top: "data" //定义网络层的输出…
准备工具: 1. 已编译好的pycaffe 2. Anaconda(python2.7) 3. graphviz 4. pydot  1. graphviz安装 graphviz是贝尔实验室开发的一个开源的绘图工具,它可以很方便绘制结构化的图形网络,支持多种格式输出,如各种常见的图片格式(bmp.png等),PDF,SVG等. graphviz使用dot作为脚本语言,只需要在dot脚本中定义图的顶点和边,以及形状.颜色.字体.填充等样式,graphviz就可以使用合适的布局算法对图形布局,使各顶…
val是validation的简称.training dataset 和 validation dataset都是在训练的时候起作用.而因为validation的数据集和training没有交集,所以这部分数据对最终训练出的模型没有贡献.validation的主要作用是来验证是否过拟合.以及用来调节训练参数等. 比如你训练0-10000次迭代过程中,train和validation的loss都是不断降低,但是从10000-20000过程中train loss不断降低, validation的lo…
本文主要参考caffe官方文档[<Fine-tuning a Pretrained Network for Style Recognition>](http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/02-fine-tuning.ipynb) 是第二篇案例.笔者对其进行了为期一周的断断续续的研究,笔者起先对python/caffe并不了解+英语不好,阅读+理解的时间有点长,前前后后过了不下十遍终于从这第二篇文档看…
下面是基于我自己的接口,我是用来分类一维数据的,可能不具通用性: (前提,你已经编译了caffe的python的接口) 添加 caffe塻块的搜索路径,当我们import caffe时,可以找到. 对于这一步,一般我们都会把 cafffe 模块的搜索路经永久地加到先加$PYTHONPATH中去,如可以把 export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH 写到 .bashrc中.而下面的做法,只是临时的做法哦: improt sys #sys.…
找不到cublas....: 在/etc/ld.so.conf文件夹中新建cuda.conf,里面添加/usr/local/cuda/lib64,然后sudo /sbin/ldconfig -v. cannot find lopencv_xxxx: apt-cache search opencv sudo apt-get install yyy 一次解决烦恼?如果用的是opencv3+的话,要面临更多痛苦. 这里的问题应当是make之后没有install,在sudo gedit /etc/ld.…
模型融合 有的时候我们手头可能有了若干个已经训练好的模型,这些模型可能是同样的结构,也可能是不同的结构,训练模型的数据可能是同一批,也可能不同.无论是出于要通过ensemble提升性能的目的,还是要设计特殊作用的网络,在用Caffe做工程时,融合都是一个常见的步骤. 比如考虑下面的场景,我们有两个模型,都是基于resnet-101,分别在两拨数据上训练出来的.我们希望把这两个模型的倒数第二层拿出来,接一个fc层然后训练这个fc层进行融合.那么有两个问题需要解决:1)两个模型中的层的名字都是相同的…
在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网络权值逐渐变大,因此,为了避免出现overfitting,会给误差函数添加一个惩罚项,常用的惩罚项是所有权重的平方乘以一个衰减常量之和.其用来惩罚大的权值. The learning rate is a parameter that determines how much an updating step influences the current value of the weights. Whil…
转:http://blog.csdn.net/tina_ttl/article/details/51556984 今天才偶然发现,caffe在计算Accuravy时,利用的是最后一个全链接层的输出(不带有acitvation function),比如:alexnet的train_val.prototxt.caffenet的train_val.prototxt 下图是这两个网络训练配置文件(prototxt文件)计算Accuray的配置文件截图的截图(对于该部分,alexnet和caffenet是…
http://blog.csdn.net/u011244794/article/details/51565786 标签: caffeimagenet 2016-06-02 12:57 9385人阅读 评论(7) 收藏 举报  分类: 机器学习(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 因为自己在网络上查到的资料对于一个新手来说虽然指明了方向,但是在细节上没有给出很好的实例,因此我把自己训练的过程记录下来. [实验环境] 物理内存:64G Free:7.5G  CPU个数:3,…
首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代码的具体的话,可以看:http://blog.csdn.net/xizero00/article/details/50921692,写的还是很不错的(不过有的地方的备注不对,不知道改过来了没). 文件 filler.hpp提供了7种权值初始化的方法,分别为:常量初始化(constant).高斯分布初…
转自:http://blog.csdn.net/cyh_24/article/details/51537709 solver.prototxt net: "models/bvlc_alexnet/train_val.prototxt" test_iter: 1000 # test_interval: 1000 # base_lr: 0.01 # 开始的学习率 lr_policy: "step" # 学习率的drop是以gamma在每一次迭代中 gamma: 0.1…
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5946041.html 参考网址: http://caffe.berkeleyvision.org/tutorial/interfaces.html http://www.cnblogs.com/denny402/p/5076285.html 1. 如果直接训练时,test.sh中内容如下: ./build/tools/caffe train --solver=examples/XXX/lenet_s…
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5909121.html 参考网址: http://www.cnblogs.com/wangxiaocvpr/p/5096265.html 可以根据caffe-master\examples\imagenet \readme.md进行理解. 1 生成LmDB格式文件 caffe中通过图像生成lmdb格式文件的程序为examples/imagenet/create_imagenet.sh.该文件调用bui…
caffe中大多数层用C++写成. 但是对于自己数据的输入要写对应的输入层,比如你要去图像中的一部分,不能用LMDB,或者你的label 需要特殊的标记. 这时候就需要用python 写一个输入层. 如在fcn 的voc_layers.py 中 有两个类: VOCSegDataLayer SBDDSegDataLayer 分别包含:setup,reshape,forward, backward, load_image, load_label. 不需要backward 没有参数更新. import…
caffe finetune两种修改网络结构prototxt方法 第一种方法:将原来的prototxt中所有的fc8改为fc8-re.(若希望修改层的学习速度比其他层更快一点,可以将lr_mult改为原来的10倍或者其他倍数) 第二种方法:只修改name,如下例子所示: layer { name: "fc8-re" #原来为"fc8" type: "InnerProduct" bottom: "fc7" top: "…
需要的文件为:deploy.prototxt caffemodel net = caffe.Net(deploy.txt,caffe_model,caffe.TEST)具体代码: import caffeimport numpy as nproot='/home/xxx/' #根目录deploy=root + 'mnist/deploy.prototxt' #deploy文件caffe_model=root + 'mnist/lenet_iter_9380.caffemodel' #训练好的 c…
plot accuracy + loss 详情可见:http://www.2cto.com/kf/201612/575739.html 1. caffe保存训练输出到log 并绘制accuracy loss曲线: 之前已经编译了matcaffe 和 pycaffe,caffe中其实已经自带了这样的小工具.caffe-master/tools/extra/parse_log.sh caffe-master/tools/extra/extract_seconds.py和 caffe-master/t…
caffe中activation function的形式,直接决定了其训练速度以及SGD的求解. 在caffe中,不同的activation function对应的sgd的方式是不同的,因此,在配置文件中指定activation layer的type,目前caffe中用的最多的是relu的activation function. caffe中,目前实现的activation function有以下几种: absval, bnll, power, relu, sigmoid, tanh等几种,分别…
caffe-master/python/draw_net.py 实现绘制caffe中定义的网络模型功能,将.prototxt文件可视化. 需要先安装pydot和protobuf工具 通过Anaconda安装pydot和protobuf工具: sduo chmod 777 -R ~/anaconda2 conda install protobuf conda install pydot 如果还缺少其他工具,也可以通过这种方式安装. 绘制Lenet网络模型 MNIST手写体网络模型Lenet: cd…
layer { name: "data" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { mirror: true crop_size: 600 mean_file: "examples/images/imagenet_mean.binaryproto" } data_param { sourc…
一. 卷积层的作用简单介绍 卷积层是深度神经网络中的一个重要的层,该层实现了局部感受野.通过这样的局部感受野,能够有效地减少參数的数目. 我们将结合caffe来解说详细是怎样实现卷积层的前传和反传的. 至于是怎样前传和反传的原理能够參考Notes on Convolutional Neural Networks.详细请百度或者谷歌,就可以下载到. Caffe中的master分支已经将vision_layers.hpp中的各个层分散到layers中去了.因此假设你是主分支的代码.请在include…
1. batch norm 输入batch norm层的数据为[N, C, H, W], 该层计算得到均值为C个,方差为C个,输出数据为[N, C, H, W]. <1> 形象点说,均值的计算过程为: (1) 即对batch中相同索引的通道数取平均值,所以最终计算得到的均值为C个,方差的计算过程与此相同. <2> batch norm层的作用: a. 均值:(2) b. 方差:(3) c. 归一化:(4) 2. caffe中batch_norm_layer.cpp中的LayerSe…
JDBC中的Statement和PreparedStatement的区别  …