2017-07-14 153 views
1

这是一个简单的图层,它可以将底层blob传递到顶层,而不会做任何其他操作。在pycaffe中创建一个简单的标识层后,网络不会收敛

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

如果你不支持渐变,你如何期望你的网络收敛?您需要实现backward还有:

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

注意,输入参数backward()比其他方法比你在问题中写道不同而不同。