如何在Caffe中配置每一个层的结构

最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结。


1. Vision Layers

1.1 卷积层(Convolution)

类型:CONVOLUTION

例子

layers {
  name: "conv1"
  type: CONVOLUTION
  bottom: "data"
  top: "conv1"
  blobs_lr: 1          # learning rate multiplier for the filters
  blobs_lr: 2          # learning rate multiplier for the biases
  weight_decay: 1      # weight decay multiplier for the filters
  weight_decay: 0      # weight decay multiplier for the biases
  convolution_param {
    num_output: 96     # learn 96 filters
    kernel_size: 11    # each filter is 11x11
    stride: 4          # step 4 pixels between each filter application
    weight_filler {
      type: "gaussian" # initialize the filters from a Gaussian
      std: 0.01        # distribution with stdev 0.01 (default mean: 0)
    }
    bias_filler {
      type: "constant" # initialize the biases to zero (0)
      value: 0
    }
  }
}


blobs_lr: 学习率调整的参数,在上面的例子中设置权重学习率和运行中求解器给出的学习率一样,同时是偏置学习率为权重的两倍。 

weight_decay

 

卷积层的重要参数

必须参数:

num_output (c_o):过滤器的个数

kernel_size (or kernel_h and kernel_w):过滤器的大小

 

可选参数:

weight_filler [default type: 'constant' value: 0]:参数的初始化方法

bias_filler:偏置的初始化方法

bias_term [default true]:指定是否是否开启偏置项

pad (or pad_h and pad_w) [default 0]:指定在输入的每一边加上多少个像素

stride (or stride_h and stride_w) [default 1]:指定过滤器的步长

group (g) [default 1]: If g > 1, we restrict the connectivityof each filter to a subset of the input. Specifically, the input and outputchannels are separated into g groups, and the ith output group channels will beonly connected to the ith input group channels.

 

通过卷积后的大小变化:

输入:n * c_i * h_i * w_i

输出:n * c_o * h_o * w_o,其中h_o = (h_i + 2 * pad_h - kernel_h) /stride_h + 1,w_o通过同样的方法计算。


1.2 池化层(Pooling)

类型:POOLING

例子

layers {
  name: "
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Caffe一个深度学习框架,其配置文件包含了网络结构、数据输入格式、训练参数等内容。下面是一个简单的配置文件示例: ``` name: "MyNetwork" # 网络名称 layer { name: "input" # 输入名称 type: "Data" # 类型 top: "data" # 输出名称 include { phase: TRAIN # 训练阶段 } transform_param { crop_size: 227 # 裁剪大小 mean_value: 104 # 均值 mean_value: 117 mean_value: 123 } data_param { source: "train_lmdb" # 数据源 batch_size: 64 # 批量大小 backend: LMDB # 数据库类型 } } layer { name: "conv1" # 卷积名称 type: "Convolution" # 类型 bottom: "data" # 输入名称 top: "conv1" # 输出名称 convolution_param { num_output: 96 # 输出通道数 kernel_size: 11 # 卷积核大小 stride: 4 # 步长 weight_filler { type: "xavier" # 权重初始化方法 } bias_filler { type: "constant" # 偏置初始化方法 value: 0 # 偏置值 } } } ``` 配置文件,每个都由一个`layer`标签表示,其包含了该的名称、类型、输入输出名称、参数配置等信息。例如,第一个为`Data`类型,包含了数据的输入格式、数据源、批量大小等信息。第二个为`Convolution`类型,包含了卷积核大小、步长、输出通道数、权重初始化方法、偏置初始化方法等信息。 除了网络结构和数据输入格式,配置文件还包含了训练参数,例如学习率、权重衰减、优化器类型等。这些参数可以在`solver`标签进行配置。例如: ``` net: "my_network.prototxt" # 网络配置文件路径 test_iter: 100 # 测试迭代次数 test_interval: 500 # 测试间隔 base_lr: 0.01 # 初始学习率 lr_policy: "step" # 学习率衰减策略 gamma: 0.1 # 学习率衰减因子 stepsize: 100000 # 学习率衰减间隔 momentum: 0.9 # 动量 weight_decay: 0.0005 # 权重衰减 solver_mode: GPU # 训练模式 ``` 以上是Caffe配置文件的简单介绍,实际使用还需要根据具体情况进行配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值