Caffe 笔记 (一)caffe的层与数据结构
Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换:
Caffe::set_mode(Caffe::GPU);
Caffe的优势
1、上手快:模型与相应优化都是以文本形式而非代码形式给出
Caffe给出了模型的定义、最优化设置以及预训练的权重,方便立即上手。
2、速度快:能够运行最棒的模型与海量的数据。
Caffe与cuDNN结合使用,测试AlexNet模型,在K40上处理每张图片只需要1.17ms.
3、模块化:方便扩展到新的任务和设置上。
可以使用Caffe提供的各层类型来定义自己的模型。
4、开放性:公开的代码和参考模型用于再现。
5、社区好:可以通过BSD-2参与开发与讨论。
Caffe的网络定义
Caffe中的网络都是有向无环图的集合,可以直接定义:
name: "dummy-net"
layers {<span><span>name: <span>"data" …</span></span></span>}
layers {<span><span>name: <span>"conv" …</span></span></span>}
layers {<span><span>name: <span>"pool" …</span></span></span>}
layers {<span><span>name: <span>"loss" …</span></span></span>}
数据及其导数以blobs的形式在层间流动。
Caffe的各层定义
Caffe层的定义由2部分组成:层属性与层参数,例如
name:"conv1"
type:CONVOLUTION
bottom:"data"
top:"conv1"
convolution_param{
num_output:<span>
kernel_size:
stride:
weight_filler{
type: "<span style="color: #c0504d;">xavier</span>"
}
}
这段配置文件的前4行是层属性,定义了层名称、层类型以及层连接结构(输入blob和输出blob);而后半部分是各种层参数。
Blob
Blob是用以存储数据的4维数组,例如
对于数据:Number*Channel*Height*Width
对于卷积权重:Output*Input*Height*Width
对于卷积偏置:Output***
训练网络
网络参数的定义也非常方便,可以随意设置相应参数。
甚至调用GPU运算只需要写一句话:
solver_mode:GPU
参考博客:https://www.csdn.net/article/2015-01-22/2823663
参考博客:https://blog.csdn.net/qq_26898461/article/details/50454804
Caffe 笔记 (一)caffe的层与数据结构的更多相关文章
- caffe笔记
1. 训练 cifar10 示例 ① cd caffe.1.0.0 ./data/cifar10/get_cifar10.sh #获取图片 ② ./examples/cifar10/cre ...
- c++ caffe 输出 activation map 、 层参数
python输出activation map与层参数:https://blog.csdn.net/tina_ttl/article/details/51033660 caffe::Net文档: htt ...
- 【神经网络与深度学习】如何在Caffe中配置每一个层的结构
如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...
- 图解 TCP/IP 第六章 TCP与UDP 笔记6.1 传输层的作用
图解 TCP/IP 第六章 TCP与UDP 笔记6.1 传输层的作用 传输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别码.根据端口号,就可以识别在传输层上一层的应用程 ...
- 【撸码caffe 三】 caffe.cpp
caffe.cpp文件完成对网络模型以及模型配置参数的读入和提取,提供了网络模型训练的入口函数train和对模型的测试入口函数test.文件中使用了很多gflags和glog指令,gflags是goo ...
- 【caffe Blob】caffe中与Blob相关的代码注释、使用举例
首先,Blob使用的小例子(通过运行结果即可知道相关功能): #include <vector> #include <caffe/blob.hpp> #include < ...
- 未定义变量 "caffe" 或类 "caffe.reset_all"
配置caffe后在matlab中测试报错. 未定义变量 "caffe" 或类 "caffe.reset_all". 我的原因是:caffe在matlab接口处没 ...
- Intel Caffe 与原生Caffe
1. 首先安装好docker,拉取intel caffe image: $ docker pull bvlc/caffe:intel 试着运行: $ docker run -it bvlc/caff ...
- CNN学习笔记:全连接层
CNN学习笔记:全连接层 全连接层 全连接层在整个网络卷积神经网络中起到“分类器”的作用.如果说卷积层.池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样 ...
- CNN学习笔记:池化层
CNN学习笔记:池化层 池化 池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样.有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见 ...
随机推荐
- ajax从jsp向servlet传值
function Delete(s){ xmlHttp=new XMLHttpRequest(); var url = "/emp/FindSpecial?selcol=" +s; ...
- 题解【洛谷P2679】[NOIP2015]子串
题面 看到求方案数,还要对 \(1000000007\ (1e9+7)\) 取模,一般这样的问题都要考虑 动态规划. 我们设 \(dp_{i,j,k,0/1}\) 表示 \(A_{1\dots i}\ ...
- Nginx 配置Websocket
Nginx反向代理配置websocket nginx.org 官网推荐如下的配置,也可以直接看官网:http://nginx.org/en/docs/http/websocket.html http ...
- 心里没点B树,怎能吃透数据库索引底层原理?
二叉树(Binary Search Trees) 二叉树是每个结点最多有两个子树的树结构.通常子树被称作“左子树”(Left Subtree)和“右子树”(Right Subtree).二叉树常被用于 ...
- uipath_excel
1.excel建表 https://jingyan.baidu.com/article/95c9d20d0ee5e2ec4e75618d.html 2.具体操作 https://blog.csdn.n ...
- AcWing 272. 最长公共上升子序列
#include<iostream> using namespace std ; ; int n; int a[N]; int b[N]; int f[N][N]; //f[i][j] / ...
- networkx graph save and load
Generate and parse JSON serializable data for NetworkX graphs. node_link_data(G[, attrs]) Returns da ...
- Spring Cloud介绍
Spring Cloud中国社区博客 Spring Cloud发展到2016年,国内关注的人越来越多,但是相应学习交流的平台和材料比较分散,不利于学习交流,因此Spring Cloud中国社区应运而生 ...
- Linux内核源码阅读记录一之分析存储在不同段中的函数调用过程
在写驱动的过程中,对于入口函数与出口函数我们会用一句话来修饰他们:module_init与module_exit,那会什么经过修饰后,内核就能狗调用我们编写的入口函数与出口函数呢?下面就来分析内核调用 ...
- Ubuntu卸载软件Firefox
查找火狐详细内容: dpkg --get-selections |grep firefox 删除 sudo apt-get purge firefox*