未调用 Caffe Layer 函数

Caffe Layer function is not invoked

我在caffe (C++) 中编写了一个自定义层。 运行 此代码(训练使用此层的模型)时,设置层("LayerSetUp" 层的方法)被调用(通过编写一段代码来验证,该代码将在硬盘上创建一个文件并转储一些数据)。但是 Forward_cpu()Backward_cpu() 方法似乎在执行过程中没有被调用。可能是什么原因?

这是 运行 使用此自定义损失层训练的模型的输出。

...
I0715 09:23:57.415463 31256 net.cpp:84] Creating Layer loss
I0715 09:23:57.415472 31256 net.cpp:406] loss <- permute_conv11
I0715 09:23:57.415482 31256 net.cpp:406] loss <- bbox
I0715 09:23:57.415495 31256 net.cpp:380] loss -> loss
I0715 09:23:57.433014 31256 layer_factory.hpp:77] Creating layer loss
I0715 09:23:57.437386 31256 layer_factory.hpp:77] Creating layer loss
I0715 09:23:57.438171 31256 layer_factory.hpp:77] Creating layer loss
I0715 09:23:57.438897 31256 layer_factory.hpp:77] Creating layer loss
I0715 09:23:57.438989 31256 layer_factory.hpp:77] Creating layer loss
I0715 09:23:57.440030 31256 net.cpp:122] Setting up loss
I0715 09:23:57.440052 31256 net.cpp:129] Top shape: (1)
I0715 09:23:57.440058 31256 net.cpp:132]     with loss weight 1
I0715 09:23:57.440099 31256 net.cpp:137] Memory required for data: 3146726596
...

损失层被多次调用(在上面的代码片段中)的原因是,我使用自定义层中的层来调用其他层,([=14= 类型的 softmax],[= 类型的 sigmoid 15=]、reshape_softmax 类型 "Reshape"、reshape_sigmoid "Reshape" 和另一个 "Reshape" 层。所有这 5 个层都作用于输入 blob 的不同部分以这个自定义图层)

Forward_cpu() 方法似乎在训练模型时根本没有被调用。可能是什么问题,我该如何解决?

很可能在这种情况下调用了 Forward_gpu() 方法。要克服此错误,请确保您没有实现 Forward_gpuBackward_gpu()

<your_custom_layer>.cu 文件