Caffe for Windows中的未知图层类型(裁剪)

war*_*ped 5 python caffe

我想使用以下卷积神经网络:

http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/

https://github.com/BVLC/caffe/tree/windows构建的caffe

适用于带有Visual Studio 2013的Windows 10,CUDA 7.5,cudNN 4和python支持。

现在,当我呼叫附带的两个网络中的任何一个时

net = caffe.Net('xyz.prototxt', 'xyz.caffemodel', caffe.TEST)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 Error parsing text-format caffe.NetParameter: 43:85: Unknown enumeration value of "CROP" for field "type".
Run Code Online (Sandbox Code Playgroud)

网络的第43行如下所示:

layers { bottom: 'd3c' bottom: 'u3a' top: 'd3cc'  name: 'crop_d3c-d3cc'  type: CROP }
Run Code Online (Sandbox Code Playgroud)

我在网上看过,有些人似乎遇到了相同的错误消息。但是,我找不到任何解决方案。

我现在的问题是:如何摆脱这个错误?

非常感谢您的帮助!

编辑:

按照Dale Song的建议更改.prototxt可以消除此错误,但又导致了另一个错误:

[libprotobuf ERROR ..\src\google\protobuf\text_format.cc:274] Error parsing text-format caffe.NetParameter: 10:102: Message type "caffe.LayerParameter" has no field named "blobs_lr".
Run Code Online (Sandbox Code Playgroud)

我通过替换来解决此问题

blobs_lr: 1 weight_decay: 1 blobs_lr: 2 weight_decay: 0
Run Code Online (Sandbox Code Playgroud)

 param {lr_mult: 1 decay_mult: 1} param {lr_mult: 2 decay_mult: 0}
Run Code Online (Sandbox Code Playgroud)

在.prototxt,作为建议在这里

谢谢!

Dal*_*ale 4

解决方案:

您应该修改net.prototxt

layers { ... type: CROP }

layer { ... type: "Crop" }

同时,prototxt中其他层的参数也应修改为类似:

layer { ... type: "TypeString" },

可以TypeString从以下位置找到:

  1. REGISTER_LAYER_CLASS(some_layer_name)相关文件中的行some_layer_name_layer.cpp。例如,REGISTER_LAYER_CLASS(Data)indata_layer.cpp表示在 中编写数据层时TypeString应该是。Datanet.prototxt
  2. REGISTER_LAYER_CREATOR(some_layer_name, GetSomeLayer)layer_factory.cpp。例如,REGISTER_LAYER_CREATOR(Convolution, GetConvolutionLayer)表示在 中编写卷积层时TypeString应该是。Convolutionnet.prototxt

原因:

您的问题的原因是:您使用了旧的图层参数格式

layers { ... type: SOMELAYERNAME }

来自caffe.protoV1LayerParameter的这种格式不支持某些较新的图层类型,包括图层。crop

您可以通过检查 不包含图层类型enum LayerType来确认这一点。V1LayerParameterCROP

为了避免这个问题,您始终可以使用最新的格式:

layer { ... type: "TypeString" }

其中TypeString可以在上面提到的2个地方找到。


编辑1

简单的评论:

一般来说,错误:

Error parsing text-format caffe.xxxParameter: ...
Run Code Online (Sandbox Code Playgroud)

总是可以通过检查文件使用caffe.protoxxx.prototxt中声明的正确字段名称并为其分配正确的值(通过检查字段类型及其值范围)来解决。