caffe框架下的lenet.prototxt定义了一个广义上的LeNet模型,对MNIST数据库进行训练实际使用的是lenet_train_test.prototxt模型. lenet_train_test.prototxt模型定义了一个包含2个卷积层,2个池化层,2个全连接层,1个激活函数层的卷积神经网络模型,模型如下: name: "LeNet" //神经网络的名称是LeNet layer { //定义一个网络层 name: "mnist" //网络层的名称是…
caffe框架自带的例子mnist里有一个lenet_solver.prototxt文件,这个文件是具体的训练网络的引入文件,定义了CNN网络架构之外的一些基础参数,如总的迭代次数.测试间隔.基础学习率.基础学习率的更新策略.训练平台(GPU或CPU)等. # The train/test net protocol buffer definition //对训练和测试网络的定义 //网络的路径,可以使用绝对路径或者相对路径 net: "D:/Software/Caffe/caffe-master…
https://www.cnblogs.com/denny402/p/5074049.html solver算是caffe的核心的核心,它协调着整个模型的运作.caffe程序运行必带的一个参数就是solver配置文件.运行代码一般为 # caffe train --solver=*_slover.prototxt 在Deep Learning中,往往loss function是非凸的,没有解析解,我们需要通过优化方法来求解.solver的主要作用就是交替调用前向(forward)算法和后向(ba…
本文以CaffeNet为例: 1. train_val.prototxt  首先,train_val.prototxt文件是网络配置文件.该文件是在训练的时候用的. 2.deploy.prototxt 该文件是在测试时使用的文件. 区别: 首先deploy.prototxt文件都是在train_val.prototxt文件的基础上删除了一些东西,所形成的. 由于两个文件的性质,train_val.prototxt文件里面训练的部分都会在deploy.prototxt文件中删除. 在train_v…
之前用deploy.prototxt 还原train_val.prototxt过程中,遇到了坑,所以打算总结一下 本人以熟悉的LeNet网络结构为例子 不同点主要在一前一后,相同点都在中间 train_val.prototxt 中的开头 看这个名字也知道,里面定义的是训练和验证时候的网络,所以在开始的时候要定义训练集和验证集的来源 name: "LeNet" layer { name: "mnist" type: "Data" top: &quo…
在修改propotxt之前我们可以对之前的网络结构进行一个直观的认识: 可以使用http://ethereon.github.io/netscope/#/editor 这个网址. 将propotxt文件内容复制后会得到可视化模型.…
关于cifar-10和mnist的weight_decay和momentum也是相当的重要:就是出现一次把cifar-10的两个值直接用在mnist上,发现错误很大.…
1.mnist实例 ##1.数据下载 获得mnist的数据包,在caffe根目录下执行./data/mnist/get_mnist.sh脚本. get_mnist.sh脚本先下载样本库并进行解压缩,得到四个文件.  2.生成LMDB 成功解压缩下载的样本库后,然后执行./examples/mnist/create_mnist.sh. create_mnist.sh脚本先利用caffe-master/build/examples/mnist/目录下的convert_mnist_data.bin工具…
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就可以使用合适的布局算法对图形布局,使各顶…
在机器学习或者模式识别中,会出现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是…
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…
首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代码的具体的话,可以看:http://blog.csdn.net/xizero00/article/details/50921692,写的还是很不错的(不过有的地方的备注不对,不知道改过来了没). 文件 filler.hpp提供了7种权值初始化的方法,分别为:常量初始化(constant).高斯分布初…
下面是基于我自己的接口,我是用来分类一维数据的,可能不具通用性: (前提,你已经编译了caffe的python的接口) 添加 caffe塻块的搜索路径,当我们import caffe时,可以找到. 对于这一步,一般我们都会把 cafffe 模块的搜索路经永久地加到先加$PYTHONPATH中去,如可以把 export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH 写到 .bashrc中.而下面的做法,只是临时的做法哦: improt sys #sys.…
一.所有声明都用xml 1. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&quo…
转自: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/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…
神经网络中,我们通过最小化神经网络来训练网络,所以在训练时最后一层是损失函数层(LOSS), 在测试时我们通过准确率来评价该网络的优劣,因此最后一层是准确率层(ACCURACY). 但是当我们真正要使用训练好的数据时,我们需要的是网络给我们输入结果,对于分类问题,我们需要获得分类结果,如下右图最后一层我们得到 的是概率,我们不需要训练及测试阶段的LOSS,ACCURACY层了. 下图是能过$CAFFE_ROOT/python/draw_net.py绘制$CAFFE_ROOT/models/caf…
模型融合 有的时候我们手头可能有了若干个已经训练好的模型,这些模型可能是同样的结构,也可能是不同的结构,训练模型的数据可能是同一批,也可能不同.无论是出于要通过ensemble提升性能的目的,还是要设计特殊作用的网络,在用Caffe做工程时,融合都是一个常见的步骤. 比如考虑下面的场景,我们有两个模型,都是基于resnet-101,分别在两拨数据上训练出来的.我们希望把这两个模型的倒数第二层拿出来,接一个fc层然后训练这个fc层进行融合.那么有两个问题需要解决:1)两个模型中的层的名字都是相同的…
参考: http://blog.csdn.net/cham_3/article/details/52682479 以caffe工程自带的mnist数据集,lenet网络为例: 将lenet_train_test.prototxt文件进行一些修改即可得到lenet.prototxt文件 头部: 去除训练用的输入数据层, layer { name: "mnist" type: "Data" top: "data" top: "label&q…
caffe中大多数层用C++写成. 但是对于自己数据的输入要写对应的输入层,比如你要去图像中的一部分,不能用LMDB,或者你的label 需要特殊的标记. 这时候就需要用python 写一个输入层. 如在fcn 的voc_layers.py 中 有两个类: VOCSegDataLayer SBDDSegDataLayer 分别包含:setup,reshape,forward, backward, load_image, load_label. 不需要backward 没有参数更新. import…
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…
Java中实现自定义的注解处理器(Annotation Processor) 置顶2016年07月25日 19:42:49 阅读数:9877 在之前的<简单实现ButterKnife的注解功能>中,使用了运行时的注解实现了通过编写注解绑定View与xml.由于运行时注解需要在Activity初始化中进行绑定操作,调用了大量反射相关代码,在界面复杂的情况下,使用这种方法就会严重影响Activity初始化效率.而ButterKnife使用了更高效的方式——Annotation Processor来…
一. 卷积层的作用简单介绍 卷积层是深度神经网络中的一个重要的层,该层实现了局部感受野.通过这样的局部感受野,能够有效地减少參数的数目. 我们将结合caffe来解说详细是怎样实现卷积层的前传和反传的. 至于是怎样前传和反传的原理能够參考Notes on Convolutional Neural Networks.详细请百度或者谷歌,就可以下载到. Caffe中的master分支已经将vision_layers.hpp中的各个层分散到layers中去了.因此假设你是主分支的代码.请在include…
caffe默认使用的数据格式为lmdb文件格式,它提供了把图片转为lmdb文件格式的小程序,但是呢,我的数据为一维的数据,我也要分类啊,那我怎么办?肯定有办法可以转为lmdb文件格式的,我也看了一些源代码,好像是把我们的数据变为Datum的格式(这是一个用google protocol buffer搞的一个数据结构类),然后再把它存为lmdb文件.在Datum里面,label为Int类型,要是我们label为符点数,我还怎么用??(不过看到Datum里面有个float_data的东西,怎么用啊,…
关于caffe中的solver: cafffe中的sover的方法都有: Stochastic Gradient Descent (type: "SGD"), AdaDelta (type: "AdaDelta"), Adaptive Gradient (type: "AdaGrad"), Adam (type: "Adam"), Nesterov's Accelerated Gradient (type: "Nes…
1.    深入Struts2的配置文件 本部分主要介绍struts.xml的常用配置. 1.1.    包配置: Struts2框架中核心组件就是Action.拦截器等,Struts2框架使用包来管理Action和拦截器等.每个包就是多个Action.多个拦截器.多个拦截器引用的集合. 在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置.它的常用属性有: l name:必填属性,用来指定包的名字. l extends:可选属性,用来指定该包继承…
原文地址:http://blog.csdn.net/longyuhome/article/details/8968093 这篇博客算是对原先的“在Eclipse中制作和使用struts2配置文件提示插件”的博客一个升级吧!原先的那篇没有Spring的提示,那时的我还不知道如何给Spring的配置文件进行,这几天,刚刚知道了.制作了这个插件之后,可以在任何的工作空间有效,不过现在我还不知道在MyEclipse中怎样才能好使.现在的插件只是针对Eclipse的.对于MyEclipse的插件还在进一步…