caffe
文章平均质量分 59
langb2014
这个作者很懒,什么都没留下…
展开
-
matlab文件复制、剪切、删除及caffe应用
实现:% 从data目录中复制指定类型的文件到目录copydata中然后再剪切到movedata中,再找到符合某个条件的文件并删除data='K:\test\1'; copydata='K:\test\2'; movedata='K:\test\3'; subDir=dir(data);len = length(subDir);disp('begin copy files..');原创 2015-11-08 18:36:37 · 3326 阅读 · 0 评论 -
caffe的Leveldb格式数据三(性能)
Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。那么数据库最怕的的随机IO他是如何解决的呢? 先说随机写,它的写都是先记录到日志文件去的,在日志文件满之前只是简单的更新memtable,那么就把随机写转化成了顺序写。在日志满了后,把日志里面转载 2015-12-25 22:40:05 · 1502 阅读 · 0 评论 -
caffe的Leveldb格式数据二(详解)
【朗格科技】记录了一个完整leveldb数据整理操作过程,很详细,学习了。LevelDb作为存储系统,数据记录的存储介质包括内存以及磁盘文件,如果像上面说的,当LevelDb运行了一段时间,此时我们给LevelDb进行透视拍照,那么您会看到如下一番景象:图1.1:LevelDb结构 从图中可以看出,构成LevelDb静态结构的包括六个主要部分:内存中的MemTable和I转载 2015-12-25 22:34:49 · 3328 阅读 · 0 评论 -
caffe的Leveldb格式数据一(官方介绍)
先看一下官网对于leveldb的一些介绍:先把原文复制过来,方便以后复习回顾。leveldbTable of Contents1. Introduction2. WriteBatch3. BloomFilter3.1. Format3.2. FilterBlockBuilder3.3. FilterBlockReader4. Storage4原创 2015-12-25 15:43:15 · 8601 阅读 · 0 评论 -
makefile:2: *** 遗漏分隔符 。 停止
在编写完makefile,然后在终端中$make出现“makefile:2: *** 遗漏分隔符 。 停止。”问题,原因是在编写makefile文件时:all: gcc -o helloworld helloworld.cfresh: rm -rf Makefileclean: rm -rf helloworld helloworld.o原创 2015-12-03 09:41:20 · 8636 阅读 · 2 评论 -
caffe的protocol buffer使用例子
上一篇学习了google的数据描述语言,然后在caffe配置好的基础上进行一个简单的编码例子测试。可能大家开始不太好找protobuf的编译器默认的安装位置,我直接使用/usr/bin/protoc命令进行操作。开始建一个proto文件文件名一般按照packageName.MessageName.proto(标准命名方法) package lm; message hello原创 2015-12-03 13:38:43 · 2942 阅读 · 4 评论 -
Windows7 64位+Cuda6.5+vs2012 的caffe配置历程
Cuda6.5安装备注:已经装好cuda的请略过,往下看。 记得没有VS2012的一定要先装VS。否则:安装后打开VS2012新建项目不显示NIVIDA解决方案。记住记住记住!重要的事情说三遍!第一步:安装文件的下载,直接去官网就下载就可以。现在有cuda7.0了。 直接双击exe文件,弹出后,首先会监测一下你的运行环境,如果找不到Nividia对应的显卡设备,他转载 2016-01-24 11:13:41 · 2336 阅读 · 9 评论 -
caffe make的时候出错:src/caffe/util/math_functions.cu(140): error: calling a host function("std::signbit
转自:http://blog.csdn.net/u013476464/article/details/38071075error提示“src/caffe/util/math_functions.cu(140): error: calling a host function("std::signbit ") from a globalfunction("caffe::sgnbit转载 2015-12-23 12:55:55 · 2317 阅读 · 0 评论 -
caffe在prototxt文件加参数
prototxt文件加参数实现:solver.prototxt加参和train_test.prototxt加参。================================================================================================================================solver.proto原创 2016-01-08 20:43:14 · 7080 阅读 · 0 评论 -
梳理caffe代码data_reader(十一)
上一篇的blocking_queue到底干了一件什么事情呢?刚刚看完就有点忘记了,再过一会估计忘光了。。。顾名思义,阻塞队列,就是一个正在排队的打饭队列,先到窗口的先打饭,为什么会高效安全呢?一是像交通有秩序,二是有了秩序是不是交通运行起来就快了。我们就看看数据是怎么进行排队的?头文件:#ifndef CAFFE_DATA_READER_HPP_#define CAFFE_DAT原创 2016-03-28 21:10:10 · 5354 阅读 · 0 评论 -
梳理caffe代码data_transformer(十二)
data_transformer详细注释看头文件和实现部分:头文件://///////////////TransformationParameter的caffe消息定义/*// Message that stores parameters used to apply transformation// to the data layer's datamessage Transform原创 2016-04-03 14:22:56 · 12343 阅读 · 1 评论 -
梳理caffe代码io(十三)
io包含了创建临时文件临时目录操作,以及从txt文件以及bin文件读取proto数据或者写入proto的数据到txt或者bin文件。io其实就是提供如何读取如何写入的一些读取图像或者文件,以及它们之间的一些转化的函数。hpp文件:#ifndef CAFFE_UTIL_IO_H_#define CAFFE_UTIL_IO_H_#include #include #include原创 2016-04-03 16:25:19 · 9962 阅读 · 2 评论 -
梳理caffe代码image_data_layer、data_layer、window_data_layer(七)
第七个现在才更新,因为有诸多头文件需要先梳理一下(八到十三),不管是新版旧版的caffe,数据成这一块,继承关系是不会变得,可能里面只是一些文件的名字和文件路径修改过了,更加层次化便于以后的开发应用。先看一张继承图就明白了:然后按照这个图layer所派生出的这几个类,以新版caffe为例,梳理一遍(每层从左向右梳理):首先是后面梳理的internal_thread,这里就不多说了。原创 2016-04-05 10:13:07 · 9285 阅读 · 9 评论 -
opencv:Load Caffe framework models
这个是怎么编译扩展包的呢?首先在here下载两个包:opencv_contrib和opencv ,然后按照正常的方法把opencv编译好:这里的opencv必须要这个链接的版本,我试了一下自己的版本是不可以编译的。cd opencvmkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PRE原创 2016-01-22 14:09:37 · 8949 阅读 · 30 评论 -
caffe添加PrecisionRecallLosslayer层(一)
yunmingzhang17 和caffe官网 都有介绍添加层,但是不是很详细,我就简单实现一下这个加层,新手学习,请多多指教。 This is a post outlining the steps you need to take to create your own layer in CAFFE, a popular framework for writing co原创 2016-01-11 16:34:27 · 6463 阅读 · 5 评论 -
梳理caffe代码math_functions(一)
先从caffe中使用的函数入手看看:#include #include #include #include "caffe/common.hpp"#include "caffe/util/math_functions.hpp"#include "caffe/util/rng.hpp"namespace caffe {//math_function 定义了caffe 中用到的一原创 2016-03-26 14:19:42 · 19308 阅读 · 7 评论 -
梳理caffe代码net(四)
net定义网络, 整个网络中含有很多layers, net.cpp负责计算整个网络在训练中的forward, backward过程, 即计算forward/backward 时各layer的gradient。看一下官网的英文描述:The forward and backward passes are the essential computations of a Net.L原创 2016-03-26 16:44:44 · 17219 阅读 · 3 评论 -
梳理caffe代码layer_factory(六)
因为前一篇描述的是layer层,其实应该先学习工厂模式,最早我也学习过了23中模式设计,不熟悉这个模式的可以看一下下面这段代码。#include "stdafx.h"#include #includeusing namespace std;class Product{public: virtual void use(){};};class ConcreteProductA :原创 2016-03-27 15:00:40 · 9394 阅读 · 0 评论 -
caffe添加HeatmapData层 (二)
经过加caffe添加PrecisionRecallLosslayer层(一) 的学习,再继续进行学习:原创 2016-03-27 21:29:42 · 4274 阅读 · 1 评论 -
caffe训练模型输出到log.txt
开始我一直以为是用caffe里面的东西加LOG输出,后来才明白是linux的输出功能。先看一下是怎么加输出到日志,$ sh train_caffenet.sh 2>&1 | tee /home/lb/log/log_40.txt | less解析一下:==================================================================原创 2016-01-08 13:39:47 · 17480 阅读 · 6 评论 -
梳理caffe代码common(八)
由于想梳理data_layer的过程,整理一半发现有几个非常重要的头文件就是题目列出的这几个:追本溯源,先从根基开始学起。这里面都是些什么鬼呢?common类命名空间的使用:google、cv、caffe{boost、std}。然后在项目中就可以随意使用google、opencv、c++的标准库、以及c++高级库boost。caffe采用单例模式封装boost的智能指针(caffe的灵原创 2016-03-28 16:41:58 · 10094 阅读 · 7 评论 -
梳理caffe代码internal_thread(九)
经过common的学习之后,然后这个InternalThread类实际上就是boost库的thread的封装,然后对线程进行控制和使用。废话不多啰嗦看看头文件:class InternalThread { public: // 构造函数和析构函数 InternalThread() : thread_() {} virtual ~InternalThread(); /**原创 2016-03-28 18:15:20 · 3271 阅读 · 0 评论 -
梳理caffe代码blocking_queue(十)
这一个文件基本是我们最头疼的黑色地带,关于XXXX锁,XXXX解锁的问题,遇到的了学习学习,记不住多温习几次就可以。首先抛开那些官方的条条框框,我们为了不让多个线程同时访问共享的资源是至关重要的。假如一个线程试图改变共享数据的值,而另外一个线程试图去读取该共享数据的值,结果将是未定义的。为了阻止这样的事情发生,需要用到一些非凡的原始数据类型和操作。其中最重的一个就是总所周知的mutex(“mu原创 2016-03-28 20:37:28 · 3220 阅读 · 0 评论 -
glog简单分析
项目组一直使用google的glog开源库进行日志输出, 花时间研究了一下, 做些分享.这里就不分析它的使用方式了, 还是比较简单的, 几乎可以不用配置就直接使用了.另外, 如果真的需要配置的话, glog和一般的日志系统(如log4系列)是不太一样的, 后者一般使用配置文件, 而glog是在命令行参数中指定的.对比优缺点, 配置文件做的配置可能更加强大一些, 不过命令行配置虽然简单但是也转载 2016-04-10 23:04:02 · 5546 阅读 · 1 评论 -
Caffe傻瓜系列(11):caffe中的lr_policy选择
在自己配置训练网络时的solver文件中这个参数选择有好多种策略。接下来看看caffe.proto文件的这个参数:// The learning rate decay policy. The currently implemented learning rate// policies are as follows:// - fixed: always return base_lr原创 2016-04-28 15:10:55 · 17448 阅读 · 0 评论 -
梳理caffe代码solver(十四)
之前有一篇介绍solver的求解,也可以看官网的介绍:here ,和翻译版的介绍。solver.hpp头文件的简单解析:#ifndef CAFFE_SOLVER_HPP_#define CAFFE_SOLVER_HPP_#include #include #include #include "caffe/net.hpp"#include "caffe/solver_fac原创 2016-04-09 12:36:50 · 10875 阅读 · 0 评论 -
梳理caffe代码sgd_solvers(十五)
新版的caffe就够模块更加规范化了一点,把所有的求解方法都另外分到一个solvers里面,里面有所有的求解方法。那我们就先看看中介部分的sgd_solvers:头文件sgd_solvers.hpp:#ifndef CAFFE_SGD_SOLVERS_HPP_#define CAFFE_SGD_SOLVERS_HPP_#include #include #include "原创 2016-05-24 21:41:32 · 10221 阅读 · 5 评论 -
梳理caffe代码python_layer(十五)
这一层使用python来调用数据什么的,先看看一些科普知识:boost::python库是pyhon和c++相互交互的框架,可以再python中调用c++的类和方法,也可以让c++调用python的类和方法python自身提供了一个Python/C API用来实现python和c++的交互,boost::python是Python/C API的包装,所以用起来更简单一些。Python对原创 2016-04-18 15:57:14 · 5511 阅读 · 0 评论 -
梳理caffe代码adadelta、adagrad、adam、nesterov、rmsprop_solver(十六)
有一篇不错的blog描述梯度下降的方法。这节是新版caffe solver的5个求解方法:adagrad_solver.cpp:#include #include "caffe/sgd_solvers.hpp"namespace caffe {#ifndef CPU_ONLYtemplate void adagrad_update_gpu(int N, Dtype*原创 2016-05-30 10:49:50 · 4882 阅读 · 0 评论 -
opencv的dnn解析
在学习过caffemodel加载之后,回头看看这个dnn里面都编译了哪些函数?先看blob头文件:#ifndef __OPENCV_DNN_DNN_BLOB_HPP__#define __OPENCV_DNN_DNN_BLOB_HPP__#include #include #include namespace cv{namespace dnn{//该类用来存储和处理bl原创 2016-05-06 22:09:02 · 17833 阅读 · 27 评论 -
梳理caffe代码base_conv_layer(十八)
这个是实现卷积的基类。base_conv_layer.hpp#ifndef CAFFE_BASE_CONVOLUTION_LAYER_HPP_#define CAFFE_BASE_CONVOLUTION_LAYER_HPP_#include #include "caffe/blob.hpp"#include "caffe/layer.hpp"#include "caffe原创 2016-06-01 19:53:22 · 12066 阅读 · 4 评论 -
梳理caffe代码conv_layer(十九)
前面的基类理解了,这个比较简单了。conv_layer.cpp:#include #include "caffe/layers/conv_layer.hpp"namespace caffe {template void ConvolutionLayer::compute_output_shape() { const int* kernel_shape_data = thi原创 2016-06-04 12:02:24 · 3806 阅读 · 0 评论 -
梳理caffe代码pooling_layer(二十)
pooling层的代码实现:#include #include #include #include "caffe/layers/pooling_layer.hpp"#include "caffe/util/math_functions.hpp"namespace caffe {using std::min;using std::max;template void Po原创 2016-06-04 12:53:54 · 5780 阅读 · 0 评论 -
从零开始山寨Caffe·零:必先利其器
caffe掌握到一定得阶段,站到caffe的高点看看,源码。Physcalの大魔導書总结的不错。搬运工搬过来。感谢作者分享,版权归作者所有,仅供学习使用。工作环境巧妇有了米炊众所周知,Caffe是在Linux下写的,所以长久以来,大家都认为跑Caffe,先装Linux。niuzhiheng大神发起了caffe-windows项目(解决了一些编译、API相异问转载 2016-06-11 18:56:19 · 3760 阅读 · 0 评论 -
从零开始山寨Caffe·壹:仰望星空与脚踏实地
请以“仰望星空与脚踏实地”作为题目,写一篇不少于800字的文章。除诗歌外,文体不限。 ——2010·北京卷仰望星空规范性Caffe诞生于12年末,如果偏要形容一下这个框架,可以用"须敬如师长"。这是一份相当规范的代码,这个规范,不应该是BAT规范,那得是Google规范。很多自称码农的转载 2016-06-11 18:57:45 · 3285 阅读 · 0 评论 -
从零开始山寨Caffe·贰:主存模型
你左手是内存,右手是显存,内存可以打死显存,显存也可以打死内存。 —— 请协调好你的主存从硬件说起物理之觞大部分Caffe源码解读都喜欢跳过这部分,我不知道他们是什么心态,因为这恰恰是最重要的一部分。内存的管理不擅,不仅会导致程序的立即崩溃,还会导致内存的泄露,当然,这只针对传统CPU程序而言。转载 2016-06-11 19:03:59 · 3299 阅读 · 0 评论 -
从零开始山寨Caffe·叁:全局线程管理器
你需要一个管家,随手召唤的那种,想吃啥就吃啥。 ——设计一个全局线程管理器一个机器学习系统,需要管理一些公共的配置信息,如何存储这些配置信息,是一个难题。设计模式MVC框架在传统的MVC编程框架中,通常采取设立数据中心的做法,将所有配置信息存在其中。同时,将数据中心指针共享至所有类,形成一个以数据为中心,多转载 2016-06-11 19:05:14 · 2139 阅读 · 0 评论 -
从零开始山寨Caffe·肆:线程系统
不精通多线程优化的程序员,不是好程序员,连码农都不是。 ——并行计算时代掌握多线程的重要性线程与操作系统用户线程与内核线程 广义上线程分为用户线程和内核线程。前者已经绝迹,它一般只存在于早期不支持多线程的系统中。它用模拟的方式实现一个模拟的多线程系统,不支持异步。即,一个线程被阻塞了,其它线转载 2016-06-11 19:06:11 · 2049 阅读 · 0 评论 -
从零开始山寨Caffe·伍:Protocol Buffer简易指南
你为Class外访问private对象而苦恼嘛?你为设计序列化格式而头疼嘛? ——欢迎体验Google Protocol Buffer面向对象之封装性历史遗留问题面向对象中最矛盾的一个特性,就是“封装性”。在上古时期,大牛们无聊地设计了三种访问域:public、private、protected。转载 2016-06-11 19:06:57 · 2278 阅读 · 0 评论 -
从零开始山寨Caffe·陆:IO系统(一)
你说你学过操作系统这门课?写个无Bug的生产者和消费者模型试试! ——你真的学好了操作系统这门课嘛? 在第壹章,展示过这样图:其中,左半部分构成了新版Caffe最恼人、最庞大的IO系统。也是历来最不重视的一部分。第伍章又对左半部分的独立性进行了分析,我是这么描述到:Datum和转载 2016-06-11 19:07:48 · 1773 阅读 · 0 评论