自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 vs2008每次打开重新配置环境

vs2008每次打开都要重新配置环境,“Visual Studio is configuring environment for first time use”,导致原来的一些设置不起作用。遇到这个问题的解决方法::::Tools > Options…>Environment>Import and Export Settings在Automatically save my settings to t

2016-11-29 11:04:37 1275

原创 caffe源码 之 dropout层

综述:::: dropout层的作用是防止训练的时候过拟合。在训练的时候,传统的训练方法是每次迭代经过某一层时,将所有的结点拿来做参与更新,训练整个网络。加入dropout层,我们只需要按一定的概率(retaining probability)p 来对weight layer 的参数进行随机采样,将被采样的结点拿来参与更新,将这个子网络作为此次更新的目标网络。这样做的好处是,由于随机的让一些节点不

2016-11-24 14:29:09 4369 4

原创 caffe源码 之 Relu层

ReLU是近些年非常流行的激活函数。相比于sigmoid与Tanh,它具有一定的优越性,这三者对比可见https://zhuanlan.zhihu.com/p/21462488?refer=intelligentunit,它的函数公式是f(x)=max(0,x)。换句话说,这个激活函数就是一个关于0的阈值。如下图::: 下面记录我在看relu层时的代码注释:::Relu_layer.hpp:::#

2016-11-22 12:26:13 4546

原创 python绘制caffe实例的网络模型

在所有目录与文件均是基于caffe根目录!!!!! python/draw_net.py可以将网络模型由prototxt变成一张图片。在绘制之前,先安装两个库:::1、安装GraphVizsudo apt-get install GraphVizGraphviz的是一款图形绘制工具,用来被python程序调用绘制图片。2、安装pydotsudo pip install pydotpydot是pyt

2016-11-21 16:52:59 1857

原创 caffe源码 之 Solver类

Solver这个类实现了优化函数的封装,其中有一个protected的成员:shared_ptr net_;,这个成员是一个指向Net类型的智能指针(shared_ptr),Solver正是通过这个指针来和网络Net来交互并完成模型的优化。不同的子类分别实现了不同的优化方法:SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDel

2016-11-18 17:25:38 3838

原创 caffe源码 之 卷积层实现

卷积神经网络(CNN)最核心的一个算法就是卷积运算,caffe框架在Conv_layer.cpp中实现了具体的卷积运算。Conv_layer.cpp中的类conv_layer并非是最基础的卷积层,它是继承了base_conv_layer,这个才是最基础的卷积层,很多卷积函数实际上是在这里面实现的。base_conv_layer又继承了基类layer。基类源码解析可见:::http://blog.cs

2016-11-16 17:15:12 4456

原创 caffe源码 之 数据层

data_layer应该是网络的最底层,主要是将数据送给blob进入到net中。能过代码可以看到Data_Layer类与Layer类之间存在着如下的继承关系::: 所以要看懂Data_Layer类构造,要先了解Layer类的构造:http://blog.csdn.net/lanxuecc/article/details/53023211其次了解Base_data_layer.cpp中的Base

2016-11-16 16:20:43 2872

转载 Caffe训练源码基本流程

Caffe简介一般在介绍Caffe代码结构的时候,大家都会说Caffe主要由Blob Layer Net 和 Solver这几个部分组成。Blob::: 主要用来表示网络中的数据,包括训练数据,网络各层自身的参数(包括权值、偏置以及它们的梯度),网络之间传递的数据都是通过 Blob 来实现的,同时 Blob 数据也支持在 CPU 与 GPU 上存储,能够在两者之间做同步。Layer::: 是对

2016-11-16 14:58:25 8468 2

原创 caffe源码 之 Blob类

caffe中Blob类主要用来表示网络中的数据,包括训练数据,网络各层自身的参数(包括权值、偏置以及它们的梯度),网络之间传递的数据都是通过 Blob 来实现的,同时 Blob 数据也支持在 CPU 与 GPU 上存储,能够在两者之间做同步。下面是我看源码时,搜集的注释,以及对源码的理解Blob.hpp::::::::::::::::#ifndef CAFFE_BLOB_HPP_#define C

2016-11-15 11:41:32 2297

原创 caffe源码依赖的一些库

LevelDB库它是google实现的一个非常高效的Key-Value数据库。它是单进程的服务,性能非常高。它只是一个C/C++编程语言的库,不包含网络服务封装。caffe主要使用该数据库来存储传入训练的图片数据与label。LMDB库它是个和levelDB类似的key/value存储库,是由OpenLDAP项目的Symas开发的。使用内存映射文件,因此读取的性能跟内存数据库一样,其大小受限于虚拟地

2016-11-14 17:00:42 1710

原创 caffe源码 之 池化层

综述::: 在传入的训练图像较大时,如果所有的图像特征拿来做训练会导致计算量太大。而且容易出现过拟合,因为图像所有的特征用来训练的话会让最终的参数过于匹配现有的图像,池化能降低图像的一些细节特征对最终参数的影响。又因为图像总是具有局部拟合性, 所以caffe中实现在每个卷积层之间加入了pooling层。所谓的池化就是一种图像降采样,最常用的降采样方法有均值采样(取区域平均值作为降采样值)、最大值采

2016-11-11 17:26:15 3059

原创 caffe源码 之 数值计算类

综述::::: Math_functions.cpp实现了网络训练所需的一些矩阵运算,数值运算,以及一些权重的参数初始化的分布函数实现。大部分函数分为float型与double型两种实现。#include <boost/math/special_functions/next.hpp>#include <boost/random.hpp>#include <limits>#include "caf

2016-11-10 11:31:48 2186

原创 caffe源码 之 layer类

综述::layer.hpp定义了layer的基类,其他例如:loss_layer,data_layer,vision_layer都是在这个layer类的基础上继承的,他们分别实现了基类layer中的一些弱函数,下面通过注释记录下我对基类源码的理解:::::layer.hpp::::::::::::::#ifndef CAFFE_LAYER_H_#define CAFFE_LAYER_H_#incl

2016-11-03 17:01:47 2114

原创 caffe源码 之 CPU与GPU数据同步类

先看SycedMem.hpp中SycedMem的类定义:::#ifndef CAFFE_SYNCEDMEM_HPP_#define CAFFE_SYNCEDMEM_HPP_#include <cstdlib>#include "caffe/common.hpp"namespace caffe {/*下面注释翻译::: 在Cuda可用并且在GPU模式下,用cudaMallocHost可以分配得到

2016-11-02 16:22:38 4642

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除