caffe
wtj318_
做个有理想,有追求的好青年
展开
-
caffe 可视化工具
法1: ./draw_net.py --rankdir TB ./lenet_train_test.prototxt draw_net.png draw_net.py:/caffe/python lenet_train_test.prototxt :/caffe/examples/mnist 在当前目录下生成图片并命名。 法2:编辑器地原创 2018-06-28 11:25:07 · 298 阅读 · 0 评论 -
2.1caffe 目录
原创 2018-09-26 10:23:50 · 80 阅读 · 0 评论 -
4、Caffe-python
4.1 初识数据可视化首先将caffe的根目录作为当前目录,然后加载caffe程序自带的小猫图片,并显示。图片大小为360x480,三通道 import numpy as np #导入模块numpy并以np作为别名,numpy:矩阵运算库 import matplotlib.pyplot as plt #画图方法,类似matlab 中的plot命令。...原创 2018-09-26 10:28:57 · 199 阅读 · 0 评论 -
10.1 深度学习框架Caffe学习与应用-数据集准备和扩增、图像预处理
一、数据集准备和扩增数据准备:一般数据集可能不会给出验证集,所以自己会从给的训练集中按照一定比例(9:1)分离出验证。 数据的扩增:因为深度网络需要在大规模的训练图像上来满足性能,所以,当原始数据集不够时需要进行数据扩增。 常用方法: 1)沿着X轴将图片左右翻转:如镜像。 2)随机的剪切、缩放、旋转。 ...原创 2018-09-26 11:19:59 · 1153 阅读 · 0 评论 -
10.2 Caffe学习与应用 -训练(卷积层参数、池化层参数、学习率、正则化)
10.2训练一、卷积层参数tricks图片输入是2的幂次方,例如32、64、96、224等。 卷积核大小是3*3或者5*5。 输入图片上下左右需要用0来补充,即padding,且假如卷积核大小是5那么padding就是2(图片左右上下都补充2),卷积核大小是3padding大小就是1。二、池化层参数tricks pooling层也能防止过拟合,使用overlapped pool...原创 2018-09-26 12:21:30 · 2038 阅读 · 0 评论 -
10.3 深度学习框架Caffe学习与应用--训练结果图像分析
一、观察损失曲线:学习率 横轴:轮。 纵轴:损失。 黄色:学习率太高; 蓝色:学习率太低; 绿色:学习率高了; 红色:学习率最好; 二、放大损失曲线:学习率、batch大小没有呈现线性:说明学习率低了。下降太慢:说明学习率太高。宽度较大:说明两次之间的样本方差太大,可通过增加样本量来解决三、准确率曲线横轴:每一轮的训练集纵轴:准确率红...原创 2018-09-26 12:31:37 · 994 阅读 · 0 评论 -
10.4 深度学习框架Caffe学习与应用-实践(Fine-tuning方法)、模型集成
一、Fine-tuning方法1、如果数据量有限,不要自己完全从头训练起caffe模型。先找相关的项目或者模型,先fintuning一下,之后再慢慢调整。2、方法:learningrate(solver.prototxt)调低(为原来的十分之一),然后,把训练模型的最后一层或两层的学习速率调大一点。——也就是,把模型前面那些层的学习调低,使得参数更新的慢一点以达到微调的目的。3、微调时...原创 2018-09-26 12:47:43 · 354 阅读 · 0 评论 -
8、编写自己的CNN框架(初级)
一、矩阵运算(1)库:cblas void cblas_gemm (const enum CBLAS_ORDER Order, // Specifies row-major (C) or column-major (Fortran) data ordering.#eg:#Matrix A =#[1 2 3]#[4 5 6]#Row-major stores values a...原创 2018-09-26 13:32:06 · 668 阅读 · 0 评论 -
11、Caffe -CUDA
一、GPU下使用Caffe源码中.cu后缀结尾的文件都是GPU下运行的文件代码。 依赖库:cuDNN (CUDA下的DNN库) 安装Caffe前先安装好CUDA驱动和cnDNN库。下载地址:https://developer.nvidia.com/cuda-80-ga2-download-archive将Cuda放到ubuntu主界面终端下CUDA安装:$ sudo ...原创 2018-09-27 10:21:27 · 1460 阅读 · 0 评论 -
3.3 使用训练好的模型
3.3.1均值文件mean file数据预处理transform_param {scale: 0.00390625mean_file_size: “examples/cifar10/mean.binaryproto" #用一个配置文件来进行均值操作mirror: 1 crop_size: 227 } 将所有训练样本的均值保存为文件 图片减去均值...原创 2018-09-26 10:17:08 · 5918 阅读 · 0 评论 -
3.2 Caffe的I/O模块
3.2.1 如何对Layer做参数配置(Data Layer参数配置为例)1)layer {name: "cifar"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {scale: 0.00390625}data_param {source: "ci...原创 2018-09-25 13:51:27 · 278 阅读 · 0 评论 -
3.1 Caffe最优求解过程
3.1.1 Solver介绍Caffe的重中之重(核心)——Solver。负责对模型优化,让损失函数(loss function)达到全局最小。solver的主要作用就是交替调用前向(forward)算法和后向(backward)算法来更新参数,实际上就是一种迭代的优化算法。到目前的版本,caffe提供了六种优化算法来求解最优参数,在solver配置文件中,通过设置type类型来选择。...原创 2018-09-25 13:43:06 · 327 阅读 · 0 评论 -
ubuntu 16.04 安装opencv 2.4
1.1 安装OpenCV #准备工作:下载opencv.zip&opencv_contrib.zip&ippicv_linux_20151201.tgz#提取opencv.zip&opencv_contrib.zip到主目录下 #在主目录下新建文件夹Downloads#ippicv_linux_20151201.tgz放置到Downloads下 ...原创 2018-09-25 13:15:39 · 697 阅读 · 0 评论 -
1.2 安装caffe
#ubuntu 环境准备(依赖包)$ sudo apt-get install git$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler$ sudo apt-get install --no-insta...原创 2018-09-25 13:16:42 · 279 阅读 · 0 评论 -
2.2 Caffe核心源码
2.2 Caffe核心源码 (1)blob[.cpp .h] 基本的数据结构Blob类(2)common[.cpp .h] 定义Caffe类(3)internal_thread[.cpp .h] 使用boost::thread线程库(4)net[.cpp .h] 网络结构类Net(5)solver[.cpp .h] 优化方法类Solver(6)data_transforme...原创 2018-09-25 13:20:30 · 82 阅读 · 0 评论 -
2.3 Caffe三级结构
2.3.1 Blob:Caffe基础存储结构,用于数据的保存、交换和操作。在内存中表示4维数组,在caffe/blob.hpp中,维度包括(width_,height_,channels_,num_),num_用于存储数据或权重(data)和权值增量(diff)。 (1)#blob.hpp:模板类源码分析$ cd caffe/include/caffe/blob.hpp#inc...原创 2018-09-25 13:32:56 · 123 阅读 · 0 评论 -
2.3.2 Layer:
用于模型和计算的基础。所有的Pooling,Convolve, apply nonlinearities等操作都在这里实现。Layer中:input data用bottom表示,output data用top表示。每一层定义了三种操作setup(Layer初始化),forward(正向传导,根据input计算output),backward(反向传导计算,根据output计算input的梯度)...原创 2018-09-25 13:39:11 · 278 阅读 · 0 评论 -
2.3.3 Net :整合连接layers
就像搭积木一样,一个net由多个layer组合而成。现给出一个简单的2层神经网络的模型定义( 加上loss 层就变成三层了),先给出这个网络的拓扑。第一层:name为mnist, type为Data,没有输入(bottom),只有两个输出(top),一个为data,一个为label第二层:name为ip,type为InnerProduct, 输入数据data, 输出数据ip第三层:...原创 2018-09-25 13:39:53 · 218 阅读 · 0 评论 -
2.4 数据类型 ——protobuf
定义:Caffe中,数据的读取、运算、存储都是采用Google Protocol Buffer来进行的。Protocol Buffer(PB)是一种轻便、高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。使用方法: 编译 protoc --proto_path=IMPORT_PATH --cpp_out=DST_D...原创 2018-09-25 13:40:46 · 668 阅读 · 0 评论 -
2.5训练mnist数据集
1、 获取数据 $ cd caffe/data/mnist$vim get_mnist.sh# 9下载文件名称列表#12 下载地址#13 解压下载文件# 确保ubuntu在联网状态下$ ./get_mnist.sh 将数据转化成lmdb格式 #脚本目录$cd caffe/examples/mnist/$ls$ vim cre...原创 2018-09-25 13:42:17 · 312 阅读 · 0 评论 -
5、自定义Layer
5.1自定义Layer 1、自定义layer的实现 a、选择继承的类 注:*任何一层都可以被继承,然后进行重写函数。 *尽量确保要实现的功能是否必须要自己写,不然尽量用已有的层,每一个层在caffe/include/caffe/layers源码中都有详细的介绍。 b、自定义神经层 ...原创 2018-09-27 10:20:52 · 357 阅读 · 0 评论