• caffe模型参数解释


    作者:wjmishuai

    出处: http://blog.csdn.net/wjmishuai/article/details/50890214

      1. 原始数据是28*28  
      2. 1:数据层:  
      3. layer {  
      4.   name: "mnist"//数据层的名字是mnist  
      5.   type: "Data"//这个层的类型是data  
      6.   top: "data"//产生两个blob,一个是data blob  
      7.   top: "label"//一个是lable blob  
      8.   include {  
      9.     phase: TRAIN  
      10.   }  
      11.   transform_param {  
      12.     scale: 0.00390625//像素归一化  
      13.   }  
      14.   data_param {  
      15.     source: "examples/mnist/mnist_train_lmdb"  
      16.     batch_size: 64  
      17.     backend: LMDB  
      18.   }  
      19. }  
      20. 2:卷积层  
      21. layer {  
      22.   name: "conv1"  
      23.   type: "Convolution"  
      24.   bottom: "data"//获取上一层的data blob  
      25.   top: "conv1"//产生conv1层  
      26.   param {  
      27.     lr_mult: 1//学习率。表示 weight的学习率和slover.pro中的学习率是一致的。  
      28.   }  
      29.   param {  
      30.     lr_mult: 2//表示 bias的学习率是slover.pro中的学习率的2倍。  这样设置会导致更快的收敛  
      31.   }  
      32.   convolution_param {  
      33.     num_output: 20//cov1层将产生输出20个通道  
      34.     kernel_size: 5//卷积核大小是5*5  
      35.     stride: 1//步长是1  
      36.     weight_filler {//权重填充器,使用xavier算法填充weight。根据输入和输出神经元的数量自动确定初始化的规模。  
      37.       type: "xavier"  
      38.     }  
      39.     bias_filler {//偏置填充器,使用constant算法填充bias。是一个常数,默认是0  
      40.       type: "constant"  
      41.     }  
      42.   }  
      43. }  
      44. 3:池化层(避免数据过拟合)  
      45. layer {  
      46.   name: "pool1"  
      47.   type: "Pooling"  
      48.   bottom: "conv1"  
      49.   top: "pool1"  
      50.   pooling_param {  
      51.     pool: MAX//使用MAX进行池化  
      52.     kernel_size: 2//卷积核大小是2*2  
      53.     stride: 2//步长是2  
      54.   }  
      55. }  
      56.   
      57. 4:全连接层  
      58. layer {  
      59.   name: "ip1"  
      60.   type: "InnerProduct"  
      61.   bottom: "pool2"  
      62.   top: "ip1"  
      63.   param {  
      64.     lr_mult: 1  
      65.   }  
      66.   param {  
      67.     lr_mult: 2  
      68.   }  
      69.   inner_product_param {  
      70.     num_output: 500//产生500维的输出数据  
      71.     weight_filler {  
      72.       type: "xavier"  
      73.     }  
      74.     bias_filler {  
      75.       type: "constant"  
      76.     }  
      77.   }  
      78. }  
      79.   
      80. 5:ReLU层(紧跟在全连接层后,目的是节省内存)  
      81. layer {  
      82.   name: "relu1"  
      83.   type: "ReLU"  
      84.   bottom: "ip1"  
      85.   top: "ip1"  
      86. }  
      87.   
      88. ReLU层后紧跟一个InnerProduct层  
      89. layer {  
      90.   name: "ip2"  
      91.   type: "InnerProduct"  
      92.   bottom: "ip1"  
      93.   top: "ip2"  
      94.   param {  
      95.     lr_mult: 1  
      96.   }  
      97.   param {  
      98.     lr_mult: 2  
      99.   }  
      100.   inner_product_param {  
      101.     num_output: 10//因为有10类,所以输出10  
      102.     weight_filler {  
      103.       type: "xavier"  
      104.     }  
      105.     bias_filler {  
      106.       type: "constant"  
      107.     }  
      108.   }  
      109. }  
      110.   
      111. 6:Loss层//不产生任何输出,只是用来计算损失函数的值,用来初始化ip2的gradient   
      112. layer {  
      113.   name: "loss"  
      114.   type: "SoftmaxWithLoss"  
      115.   bottom: "ip2"//需要两个blob,一个是ip2,作为预测用  
      116.   bottom: "label"//来自数据层,作为标签  
      117.   top: "loss"  
      118. }  

    name: 表示该层的名称,可随意取

     

    type: 层类型,如果是Data,表示数据来源于LevelDB或LMDB。根据数据的来源不同,数据层的类型也不同(后面会详细阐述)。一般在练习的时候,我们都是采 用的LevelDB或LMDB数据,因此层类型设置为Data。

     

    top或bottom: 每一层用bottom来输入数据,用top来输出数据。如果只有top没有bottom,则此层只有输出,没有输入。反之亦然。如果有多个 top或多个bottom,表示有多个blobs数据的输入和输出。

     

    data 与 label: 在数据层中,至少有一个命名为data的top。如果有第二个top,一般命名为label。 这种(data,label)配对是分类模型所必需的。

     

    include: 一般训练的时候和测试的时候,模型的层是不一样的。该层(layer)是属于训练阶段的层,还是属于测试阶段的层,需要用include来指定。如果没有include参数,则表示该层既在训练模型中,又在测试模型中。

    Transformations: 数据的预处理,可以将数据变换到定义的范围内。如设置scale为0.00390625,实际上就是1/255, 即将输入数据由0-255归一化到0-1之间

  • 相关阅读:
    浅谈纯文本&&富文本&&Markdown区别
    浅谈CSS图片base64编码技术
    postman测试请求API:方式post、上传文件file
    Antd版本V3-->V4迁移问题:初始化调整
    浅谈switch语句的技巧
    react路由传参
    react dangerouslySetInnerHTML用法
    SPA单页应用的2种类型分页技术(React、Vue等组件化开发)
    (3)re模块(正则表达式模块)
    (2)hashlib模块(加密算法模块)
  • 原文地址:https://www.cnblogs.com/guohaoyu110/p/7492115.html
Copyright © 2020-2023  润新知