
深度学习
文章平均质量分 61
_苏_
苦逼程序员啊~
展开
-
用caffe训练好的lenet_iter_10000.caffemodel测试单张mnist图片
接上个博客:http://blog.youkuaiyun.com/lanxuecc/article/details/52474476,前面已经生成了deploy.proto.txt。下面具体记录用lenet_iter_10000.caffemodel测试图片。准备一张手写数字图片注意在depoy.prototxt文件中指定正确的该图片的通道数。准备一个均值文件因为classify.py中的测试接口caffe.C原创 2016-09-09 14:05:09 · 15391 阅读 · 43 评论 -
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 · 4598 阅读 · 0 评论 -
caffe源码 之 Solver类
Solver这个类实现了优化函数的封装,其中有一个protected的成员:shared_ptr net_;,这个成员是一个指向Net类型的智能指针(shared_ptr),Solver正是通过这个指针来和网络Net来交互并完成模型的优化。不同的子类分别实现了不同的优化方法:SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDel原创 2016-11-18 17:25:38 · 3887 阅读 · 0 评论 -
caffe源码 之 数据层
data_layer应该是网络的最底层,主要是将数据送给blob进入到net中。能过代码可以看到Data_Layer类与Layer类之间存在着如下的继承关系::: 所以要看懂Data_Layer类构造,要先了解Layer类的构造:http://blog.youkuaiyun.com/lanxuecc/article/details/53023211其次了解Base_data_layer.cpp中的Base原创 2016-11-16 16:20:43 · 2923 阅读 · 0 评论 -
caffe源码 之 Blob类
caffe中Blob类主要用来表示网络中的数据,包括训练数据,网络各层自身的参数(包括权值、偏置以及它们的梯度),网络之间传递的数据都是通过 Blob 来实现的,同时 Blob 数据也支持在 CPU 与 GPU 上存储,能够在两者之间做同步。下面是我看源码时,搜集的注释,以及对源码的理解Blob.hpp::::::::::::::::#ifndef CAFFE_BLOB_HPP_#define C原创 2016-11-15 11:41:32 · 2356 阅读 · 0 评论 -
caffe源码 之 caffe程序入口
见代码及其注释(ps::个人理解,如有误,请指出)#ifdef WITH_PYTHON_LAYER#include "boost/python.hpp"namespace bp = boost::python;#endif#include <gflags/gflags.h>#include <glog/logging.h>#include <cstring>#include <map>#原创 2016-10-26 14:39:27 · 3049 阅读 · 0 评论 -
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 · 4701 阅读 · 0 评论 -
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 · 2175 阅读 · 0 评论 -
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 · 2228 阅读 · 0 评论 -
caffe源码 之 池化层
综述::: 在传入的训练图像较大时,如果所有的图像特征拿来做训练会导致计算量太大。而且容易出现过拟合,因为图像所有的特征用来训练的话会让最终的参数过于匹配现有的图像,池化能降低图像的一些细节特征对最终参数的影响。又因为图像总是具有局部拟合性, 所以caffe中实现在每个卷积层之间加入了pooling层。所谓的池化就是一种图像降采样,最常用的降采样方法有均值采样(取区域平均值作为降采样值)、最大值采原创 2016-11-11 17:26:15 · 3097 阅读 · 0 评论 -
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 · 4516 阅读 · 0 评论 -
用caffe训练测试自己的图片
所有的操作是基于caffe的根目录/caffe-master/来操作的:数据准备我所用的图片是车牌识别中,0~9数字图片,在data下面新建一个number目录,用来存放训练图片(caffenumimg_train)与测试图片(caffenumimg_test),0~9分别有200张左右的训练图片和50张左右的测试图片转换成lmdb格式文件首先,在data/number/目录编写一个脚本create原创 2016-08-26 16:28:38 · 9715 阅读 · 2 评论 -
caffe目录结构 及 caffe源码文件说明
转自:::http://yufeigan.github.io/2014/12/09/Caffe学习笔记1-安装以及代码结构/目录结构caffe文件夹下主要文件: 这表示文件夹主要文件夹data 用于存放下载的训练数据 docs 帮助文档 example 一些代码样例 matlab MATLAB接口文件 python Python接口文件 model 一些配置好的模型参数 scripts转载 2016-10-24 15:19:17 · 4649 阅读 · 0 评论 -
caffe生成lenet-5的deploy.prototxt文件
接前面博客:http://blog.youkuaiyun.com/lanxuecc/article/details/52329708 我学会了用caffe训练自己的测试自己的图片,但是这里测试的是测试数据集,那么如何用训练好的caffemodel测试自己的单张图片呢。下面记录下我用训练好的lenet_iter_10000.caffemodelg来测试mnist图片的整个摸索过程::::生成deploy.prot原创 2016-09-09 10:06:37 · 21824 阅读 · 15 评论 -
Caffe单步调试
转自博客:::http://blog.youkuaiyun.com/xiaoyezi_1834/article/details/50724875这个方法我实际用过,确实算是比较好用,相对GDB或者Qt或者eclipse要方便点。其中 GDB:::http://blog.youkuaiyun.com/dengbingfeng/article/details/51469051 QT:::https://www.zhihu.转载 2016-10-25 19:57:48 · 2172 阅读 · 3 评论 -
Caffe训练源码基本流程
Caffe简介一般在介绍Caffe代码结构的时候,大家都会说Caffe主要由Blob Layer Net 和 Solver这几个部分组成。Blob::: 主要用来表示网络中的数据,包括训练数据,网络各层自身的参数(包括权值、偏置以及它们的梯度),网络之间传递的数据都是通过 Blob 来实现的,同时 Blob 数据也支持在 CPU 与 GPU 上存储,能够在两者之间做同步。Layer::: 是对转载 2016-11-16 14:58:25 · 8520 阅读 · 2 评论 -
caffe源码依赖的一些库
LevelDB库它是google实现的一个非常高效的Key-Value数据库。它是单进程的服务,性能非常高。它只是一个C/C++编程语言的库,不包含网络服务封装。caffe主要使用该数据库来存储传入训练的图片数据与label。LMDB库它是个和levelDB类似的key/value存储库,是由OpenLDAP项目的Symas开发的。使用内存映射文件,因此读取的性能跟内存数据库一样,其大小受限于虚拟地原创 2016-11-14 17:00:42 · 1764 阅读 · 0 评论 -
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 · 1887 阅读 · 0 评论 -
caffe安装
忙活了几天终于把Caffe的环境搭建完成,趁着有空记录下整个过程显卡: Geforce GT630 系统: Ubuntu 1404 64bit Cuda: Cuda 6.5 64bit Caffe: 这里下载仿照这个博客安装的:http://www.cnblogs.com/platero/p/3993877.html1-安装基本包apt-get instal原创 2016-07-22 20:25:15 · 4837 阅读 · 0 评论 -
Caffe编译 Mnist训练测试
Caffe编译进入目录/caffe-master/,输入下列命令编译整个caffe工程make cleanmake all 补充说明:很多添加编译选项,据说是为利用cpu的4个核并行编译加快编译效率,然而这里编译时报错所以就make all。其实make all 编译些什么可以看同目录下的Makefile文件。 补充说明:在make all 之前需要修改Makefile.config.exam原创 2016-07-29 14:43:59 · 9138 阅读 · 2 评论 -
caffe测试单张图片
所有的操作是基于caffe的根目录/caffe-master/来操作的:1、caffe提供了一个用已经训练好的caffemodel来分类单张图片的库(./build/examples/cpp_classification/classification.bin),该库的源码为文件./examples/cpp-classification/classification.cpp。2、利用该库的分类单张图片原创 2016-10-12 11:05:28 · 8029 阅读 · 1 评论 -
Caffe图片分类
classification.cpp中main函数的源码为:::int main(int argc, char** argv) { if (argc != 6) { std::cerr << "Usage: " << argv[0] << " deploy.prototxt network.caffemodel" << " mean原创 2016-10-27 19:29:28 · 2809 阅读 · 9 评论 -
caffe源码 之 dropout层
综述:::: dropout层的作用是防止训练的时候过拟合。在训练的时候,传统的训练方法是每次迭代经过某一层时,将所有的结点拿来做参与更新,训练整个网络。加入dropout层,我们只需要按一定的概率(retaining probability)p 来对weight layer 的参数进行随机采样,将被采样的结点拿来参与更新,将这个子网络作为此次更新的目标网络。这样做的好处是,由于随机的让一些节点不原创 2016-11-24 14:29:09 · 4424 阅读 · 4 评论