Caffe从入门到精通04
来源:互联网 发布:linux 查看登陆ip 编辑:程序博客网 时间:2024/06/05 08:54
【Blob】
Blob是caffe框架中一种标准的数组,一种统一的内存接口,它详细描述了信息是如何存储的,以及在如何在层之间通讯。
Blobs封装了运行时的数据信息,用于存储数据或者权值(data)和权值增量(diff)
每层(layer)的输入(bottom)和输出(top)都需要对Blob对象进行缓冲
Blob可以自助同步CPU和GPU上的数据
从数学上来说,Bolb就是一个N维数组,是caffe中的数据操作基本单位;对于图片来说,Blob可以表示为(N*C*H*W)的4维数组。其中N表示图片的数量,C表示图片的通道数,H和W分别表示图片的高度和宽度;对于CNN网络的feature-map来说,N表示一个batch中的样本数量,C为通道数(在 softmax-loss层之前实际就是分类数),H*W为feature-map的大小,通常为1
【layer】
层是网络模型的组成要素和计算的基本单位。
从bottom进行数据的输入,计算后,通过top进行输出。
每一种类型的层都定义了三种关键计算:setup,forward、backward
setup:层的建立和初始化,以及在整个模型中的连接初始化
forward:从bottom得到输入数据,进行计算,将计算结果送到top,进行输出
backward:从层的输出端top得到数据的梯度,计算当前的梯度,并将计算结果送到bottom,向前传递。
【Net】
Net代表一个完整的CNN模型,包含若干layer实例
Net对应的描述文件为*.prototxt
Net中既包含layer对象,又包含blob对象,其中blob对象用于存放每个layer输入/输出、中间结果;layer则根据net的描述,对指定的输入blob进行计算处理(卷积、池化、全连接、计算代价函数),然后将输出结果放到输出blob中
区分两种blob:1.权值blob:随着学习过程而更新,属于“模型” 2.layer的输入\输出 blob:随网络输入变换,属于“数据”
【Blob、layer、net三者的关系】
Blob提供了数据容器机制
layer通过不同策略使用该数据容器,实现多元化的计算处理过程,同时提供了各种基本的算法机制
net利用layer的这些机制,组合为完整的深度学习模型
【Solver】
solver是caffe的运算核心,协调着整个模型的运作。caffe程序必带的一个参数就是solver配置文件。运行代码一般为
%一般格式%.\Build\x64\Release\caffe.exe train -solver=*_solver.prototxt%举例%.\Build\x64\Release\caffe.exe train -solver=examples\mnist\lenet_solver.prototxt
# The train/test net protocol buffer definition# 训练\测试 网络配置定义net: "examples/mnist/lenet_train_test.prototxt"# test_iter specifies how many forward passes the test should carry out.# In the case of MNIST, we have test batch size 100 and 100 test iterations,# covering the full 10,000 testing images.# test_iter 表明了测试的前向迭代次数。# 就MNSIT而言,用于测试的一个批量含有100个样本,测试迭代100,这样就可以测试全部的10000张测试图片test_iter: 100# Carry out testing every 500 training iterations.#每500次训练迭代后执行一次测试test_interval: 500# The base learning rate, momentum and the weight decay of the network.#基础学习率、动量、网络权重的衰减base_lr: 0.01momentum: 0.9weight_decay: 0.0005# The learning rate policy#学习率策略lr_policy: "inv"gamma: 0.0001power: 0.75# Display every 100 iterations#每100次迭代显示一次display: 100# The maximum number of iterations#最大跌打次数max_iter: 1000# snapshot intermediate results#中间快照结果snapshot: 5000snapshot_prefix: "examples/mnist/lenet"# solver mode: CPU or GPU#求解器模式solver_mode: CPU
- Caffe从入门到精通04
- Caffe从入门到精通01
- Caffe从入门到精通02
- Caffe从入门到精通03
- Caffe 从入门到精通05
- Caffe从入门到精通06
- Caffe从入门到精通07
- Caffe从入门到精通08
- Caffe从入门到精通09
- 从零开始系列-Caffe从入门到精通之一 环境搭建
- 从入门到精通
- Google从入门到精通
- JAVA从入门到精通
- GOOGLE从入门到精通
- 搜索引擎从入门到精通
- RMS从入门到精通
- RSS从入门到精通
- RSS从入门到精通
- bgra转rgba 工具
- 100G 50G 25G光通信模块
- function declaration isn't a prototype解决办法
- java集合-Iterator迭代
- 01-面向对象(异常-概述).1 2 03-面向对象(异常-原理&异常对象的抛出throw)1 2
- Caffe从入门到精通04
- //编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、 //数学课(Math)和平均值(avg),方法包括求
- 微信小程序部分手机无法拨打电话的解决的方案
- redigo 批量删除使用
- 为什么我全力推荐Golang
- undefined与null的区别
- 云、PaaS、DevOps难以名状的三角恋,你怎么看?
- AndroidStudio核心快捷键精编
- 排序算法--冒泡排序