caffe笔记之例程学习(三)

原文链接:caffe.berkeleyvision.org/tutorial/layers.html

创建caffe模型,首先要在protocol buffer 定义文件(prototxt)中定义结构。

在caffe环境中,图像的明显特征是其空间结构。

Convolution:

Documents:

 1 Parameters (ConvolutionParameter convolution_param)
 2
 3 Required
 4     num_output (c_o): 输出数(filter数)
 5     kernel_size (or kernel_h and kernel_w): 指定卷积核
 6
 7 Strongly Recommended
 8     weight_filler [default type: ‘constant‘ value: 0]
 9
10 Optional
11     bias_term [default true]: 指定是否提供偏置10
12     pad (or pad_h and pad_w) [default 0]: 指定输入图片的两侧像素填充量
13     stride (or stride_h and stride_w) [default 1]: specifies the intervals at which to apply the filters to the input
14     group (g) [default 1]: 如果 g > 1, 我们限制每一个filter之间的连通性 对于输入的子集. 指定输入和输出被分为 g 组,第i输出组只会和第i输入组相连接.
15
16 Input
17
18 n * c_i * h_i * w_i
19
20 Output
21
22 n * c_o * h_o * w_o, where h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1 and w_o likewise.

example:

 1 layers {
 2   name: "conv1"
 3   type: CONVOLUTION
 4   bottom: "data"
 5   top: "conv1"
 6   blobs_lr: 1          # learning rate multiplier for the filters
 7   blobs_lr: 2          # learning rate multiplier for the biases
 8   weight_decay: 1      # weight decay multiplier for the filters
 9   weight_decay: 0      # weight decay multiplier for the biases
10   convolution_param {
11     num_output: 96     # learn 96 filters
12     kernel_size: 11    # each filter is 11x11
13     stride: 4          # step 4 pixels between each filter application
14     weight_filler {
15       type: "gaussian" # initialize the filters from a Gaussian
16       std: 0.01        # distribution with stdev 0.01 (default mean: 0)
17     }
18     bias_filler {
19       type: "constant" # initialize the biases to zero (0)
20       value: 0
21     }
22   }
23 }

Pooling:

deeplearning.stanford.edu/wiki/index.php/池化

池化: 概述

在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) * (96 − 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个 892 * 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。

为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在 另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平 均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

时间: 2024-10-18 09:57:06

caffe笔记之例程学习(三)的相关文章

caffe笔记之例程学习

学习notebook自带例程Classification with HDF5 data时遇到了一些问题,认真把模型文件看了一遍. 模型定义中有一点比较容易被误解,信号在有向图中是自下而上流动的,并不是自上而下. 层的结构定义如下: 1 name:层名称 2 type:层类型 3 top:出口 4 bottom:入口 Each layer type defines three critical computations: setup, forward, and backward. Setup: i

caffe笔记之例程学习(二)

Classification with HDF5 data 1.导入库 1 import os 2 import h5py 3 import shutil 4 import sklearn 5 import tempfile 6 import numpy as np 7 import pandas as pd 8 import sklearn.datasets 9 import sklearn.linear_model 10 import matplotlib.pyplot as plt 11

(笔记)Linux内核学习(三)之进程调度

进程调度: 在可运行态进程之间分配有限处理器时间资源的内核子系统. 一 调度策略 1 进程类型 I/O消耗型进程:大部分时间用来提交I/O请求或是等待I/O请求,经常处于可运行状态,但运行时间短,等待请求过程时处于阻塞状态.如交互式程序. 处理器消耗型进程:时间大都用在执行代码上,除非被抢占否则一直不停的运行. 综合型:既是I/O消耗型又是处理器消耗型. 调度策略要在:进程响应迅速(响应时间短)和最大系统利用率(高吞吐量)之间寻找平衡. 2 调度概念 优先级:基于进程价值和对处理器时间需求进行进

【Android开发学习笔记】【第三课】Activity和Intent

首先来看一个Activity当中启动另一个Activity,直接上代码说吧: (1)首先要多个Activity,那么首先在res-layout下新建一个 Other.xml,用来充当第二个Activity的布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

iOS学习笔记---oc语言第三天

继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量也继承过来了,只是不能访问) 面向对象提供了继承语法.能大大简化代码,把公共的方法和实例对象写在父类里.子类只需要写自己独有的实例变量和方法即可 继承既能保证类的完整,又能简化代码 继承特点 oc中只允许单继承 没有父类的类称为根类,oc中得根类是NSObject(祖宗) 继承的内容:所有的实例变量

马程序员学习笔记——红黑树解析三

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 六.树的前序.中序.后序 前序遍历(根左右): 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历(左根右): 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历(左右根): 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点 扩展:已知前序.中序遍历,求后序遍历? 例: 前序遍历: GDAFEMHZ 中序遍历:

capwap学习笔记&mdash;&mdash;初识capwap(三)

2.5.6 CAPWAP状态机详解 2.5.6.1 Start to Idle 这个状态变迁发生在设备初始化完成. ¢  WTP: 开启CAPWAP状态机. ¢  AC:  开启CAPWAP状态机. 2.5.6.2 Idle to Discovery 这个状态变迁发生是为了支持CAPWAP发现进程. ¢   WTP: WTP进入发现状态是为了优先去传输第一个Discovery Request message.在进入这个状态之前,WTP设置发现DiscoveryInterval timer,将Di

Jquery Easy UI初步学习(三)数据增删改

第二篇只是学了加载用datagrid加载数据,数据的增删改还没有做,今天主要是解决这个问题了. 在做增删改前需要弹出对应窗口,这就需要了解一下EasyUi的弹窗控件. 摘自:http://philoo.cnblogs.com/ 我的理解,就是panel有的属性Window.dialog都有,同时保留自己的扩展属性方法 , 所以主要展示pannel的属性. Pannel 属性 名称 类型 说明 默认值 title string 显示在Panel头部的标题文字. null iconCls strin

iOS学习笔记---c语言学习第七天

结构体 结构体是一种自定义的数据类型 struct 结构体名 { 类型说明符  成员名: … 类型说明符  成员名: }: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { struct teacher{ char name[30]; char sex; int age; char course[30]; }; typedef struct teacher Teacher; Teacher c