如何修改批处理规范化层(DeconvNet),使其能够与caffe一起运行?

如何修改批处理规范化层(DeconvNet),使其能够与caffe一起运行?,caffe,conv-neural-network,image-segmentation,pycaffe,batch-normalization,Caffe,Conv Neural Network,Image Segmentation,Pycaffe,Batch Normalization,我想在我的数据上运行,但它似乎是为另一个版本的caffe编写的。有人知道如何更改批处理参数吗 在Deconvnet中的那个 layers { bottom: 'conv1_1' top: 'conv1_1' name: 'bn1_1' type: BN bn_param { scale_filler { type: 'constant' value: 1 } shift_filler { type: 'constant' value: 0.001 }

我想在我的数据上运行,但它似乎是为另一个版本的
caffe
编写的。有人知道如何更改批处理参数吗

在Deconvnet中的那个

layers { bottom: 'conv1_1' top: 'conv1_1' name: 'bn1_1' type: BN
  bn_param { scale_filler { type: 'constant' value: 1 }
             shift_filler { type: 'constant' value: 0.001 }
             bn_mode: INFERENCE } }
Caffe为cifar10提供的一个示例:

layer {
  name: "bn1"
  type: "BatchNorm"
  bottom: "pool1"
  top: "bn1"
  batch_norm_param {
    use_global_stats: true
  }
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  include {
    phase: TEST
  }
}
一旦我想运行它,请首先显示以下错误:

I1029 13:46:47.156885 11601 solver.cpp:87] Creating training net from net file: train_val.prototxt
[libprotobuf ERROR google/protobuf/text_format.cc:299] Error parsing text-format caffe.NetParameter: 59:3: Unknown enumeration value of "BN" for field "type".
F1029 13:46:47.157971 11601 upgrade_proto.cpp:88] Check failed: ReadProtoFromTextFile(param_file, param)
BN
更改为
BatchNorm
后,会显示有关参数的新错误:

I1029 14:03:38.497725 12097 solver.cpp:87] Creating training net from net file: train_val.prototxt
[libprotobuf ERROR google/protobuf/text_format.cc:299] Error parsing text-format caffe.NetParameter: 59:3: Unknown enumeration value of "BatchNorm" for field "type".
F1029 14:03:38.503345 12097 upgrade_proto.cpp:88] Check failed: ReadProtoFromTextFile(param_file, param)
有人试过训练Deconvnet吗?如果是的话,你能指引我吗?
谢谢

您能告诉我这样更改是否正确吗

layer {
  name: "bn1_1"
  type: "BatchNorm"
  bottom: "conv1_1"
  top: "conv1_1"
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  include {
    phase: TEST
  }
  batch_norm_param {
    use_global_stats: true
  }
}
layer {
  name: "scale_conv1_1"
  type: "Scale"
  bottom: "conv1_1"
  top: "conv1_1"
  scale_param {
    bias_term: true
    bias_filler {
      type: "constant"
      value: 0.001
    }
  }
}

你能告诉我这样改变是否正确吗

layer {
  name: "bn1_1"
  type: "BatchNorm"
  bottom: "conv1_1"
  top: "conv1_1"
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  param {
    lr_mult: 0
  }
  include {
    phase: TEST
  }
  batch_norm_param {
    use_global_stats: true
  }
}
layer {
  name: "scale_conv1_1"
  type: "Scale"
  bottom: "conv1_1"
  top: "conv1_1"
  scale_param {
    bias_term: true
    bias_filler {
      type: "constant"
      value: 0.001
    }
  }
}

看起来你使用的是旧的咖啡馆版本。请重新设置到最新的
主版
版本,然后尝试使用
类型:“BatchNorm”
至于比例和偏差/偏移,您需要添加一个额外的
“比例”
层。有关更多信息,请参阅。我在3个月前几乎是从caffe网站的主分支安装的。谢谢你的帮助。Will tryIt似乎您的caffe将
“type”
视为枚举,而不是字符串:枚举在较旧的版本中使用,不再使用。第一个是来自
Deconvnet
,我没有更改它,我只是想知道我应该对它们的代码做什么样的更改。我的caffe版本是
1.0.0
您似乎正在使用旧的caffe版本。请重新设置到最新的
主版
版本,然后尝试使用
类型:“BatchNorm”
至于比例和偏差/偏移,您需要添加一个额外的
“比例”
层。有关更多信息,请参阅。我在3个月前几乎是从caffe网站的主分支安装的。谢谢你的帮助。Will tryIt似乎您的caffe将
“type”
视为枚举,而不是字符串:枚举在较旧的版本中使用,不再使用。第一个是来自
Deconvnet
,我没有更改它,我只是想知道我应该对它们的代码做什么样的更改。我的caffe版本是
1.0.0
那么刻度的填充物呢?亲爱的Shai,我是通过
caffe.NetSpec()
创建图层的,所以我这样写的
scale=L.scale(conv,in_place=True,bias_term=1,bias_filler=dict(type='constant',value=0.001))
。如何添加它,我认为它的值是
1
所以比例没有改变,我错了吗?比例的填充物呢?亲爱的Shai,我正在通过
caffe.NetSpec()
创建层,所以我这样写
scale=L.scale(conv,in_place=True,bias_term=1,bias_filler=dict(type='constant',value=0.001))
。如何添加它,我认为它的值是
1
所以比例没有变化,我错了吗?