1

我正在使用pycaffe的反向函数来实现反卷积过程。我首先运行正向进程并获取网络的输出数据blob,然后将数据blob分配给顶层的diff blob,然后运行向后处理。但是,底层的差异不会被后向处理所改变,全部为零。我不知道差异为什么没有被后退转移。pycaffe不能从上到下传递差异

def backward(fcn_net, im, name_list_, target_blob): 
    start=name_list_[len(name_list_)-1]; end=name_list_[0] 
    print(start, end) 
    fcn_net.blobs[start].diff[...]=im[...] 
    fcn_net.backward(start=start, end=end) 
    return fcn_net.blobs[target_blob].diff 

在上面的代码中,name_list_包含所有的conv层和合并层,并且从最后一个conv层开始向后。谢谢!

回答

0

这可能是你的网络默认不通过渐变的情况。
考虑在您的网络原型文件中设置force_backward。例如,
参见this answer