在 pycaffe 中创建一个简单的身份层后网络不收敛

Network does not converge after creating a simple identity layer in pycaffe

这是一个简单的层,它将底部的 blob 传递到顶部,不做任何其他事情。

import caffe
import numpy as np

class MyCustomLayer(caffe.Layer):
def setup(self, bottom, top):
    if len(bottom) != 1:
        raise Exception("Wrong number of bottom blobs")



def forward(self, bottom, top):
    top[0].data[...] = bottom[0].data




def reshape(self, bottom, top):
    top[0].reshape(*bottom[0].shape)



    pass

def backward(self, propagate_down, bottom, top):


    """
        This layer does not back propagate
    """

    pass

但是,当在网络中使用时,网络不会收敛并且会保持 0.1 精度(而在使用该层之前它是 0.75%)
我在这里做错了什么?

如果你不反向传播梯度,你希望你的网络如何收敛?您还需要实施 backward

def backward(self, top, propagate_down, bottom):
  bottom[0].diff[...] = top[0].diff

请注意,backward() 的输入参数不同于其他方法,也不同于您在问题中所写的内容。