在pycaffe

时间:2017-07-14 14:37:20

标签: neural-network deep-learning caffe gradient-descent 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%)
我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

如果你没有反向渐变,你如何期望你的网络收敛?您还需要实现backward

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

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