不调用咖啡层函数

Caffe Layer function is not invoked

本文关键字:函数 咖啡 调用      更新时间:2023-10-16

我在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
...

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

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

在这种情况下,可能会调用Forward_gpu()方法。要克服此错误,请确保您没有实现Forward_gpuBackward_gpu()<your_custom_layer>.cu文件