如何添加比例参数

How to Add Scale Parameter

我有以下要添加的咖啡层:

layer {
  name: "s"
  type: "Scale"
  bottom: "o"
  top: "o"
  param {
    lr_mult: 0
    decay_mult: 0
  }
  param {
    lr_mult: 1
    decay_mult: 0
  }
  scale_param {
    filler {
      value: 1    }
    bias_term: true
    bias_filler {
      value: 0
    }
  }
}

我需要用 Python 创建它。我该怎么做?

caffeNet.tops[gScaleName] = L.Scale(caffeNet.tops[gConvName],
                                        param=[dict(lr_mult=0, decay_mult=0), dict(lr_mult=1, decay_mult=0)],
                                        scale_param=[dict(bias_term=True), dict(bias_filler=dict(value=0)), dict(filler=dict(value=0))]
                                        )

我试了一下,它给出了一个错误 ScaleParameter has no attribute add。如何添加?

试试这个:

caffeNet.tops[gScaleName] = L.Scale(caffeNet.tops[gConvName],
                                    param=[{'lr_mut': 0, 'decay_mult': 0},
                                           {'lr_mult': 1, 'decay_mult': 0}],
                                    scale_param={'filler': {'value': 1},
                                                 'bias_term': True,
                                                 'bias_filler': {'value': 1})

请注意 scale_paramdict 而不是 dictlist
如果仔细查看 caffe.proto,您会注意到 scale_paramoptional:

optional ScaleParameter scale_param = 142;

意味着每个 layer 中最多可以有一个 scale_param 的值。当谈到 param 时,它被定义为 repeated:

repeated ParamSpec param = 6;

意味着每层可以有 array/list 个 param


顺便说一句,
您定义 Scale 层的方式将比例固定为 1 并将学习率设置为零,这意味着您只学习该层中的偏差。
为什么不使用 "Bias" 层并跳过冗余比例?