neural-network - 在 pycaffe 中创建简单的身份层后网络不收敛

标签 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%)
我在这里做错了什么?

最佳答案

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

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

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

关于neural-network - 在 pycaffe 中创建简单的身份层后网络不收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45105631/

相关文章:

tensorflow - CNN 损失停留在 2.302 (ln(10))

python - 使用 keras v2.0 未学习 XOR

neural-network - 谷歌 DeepDream 如何运作?

python - 修正线性单元的反向传播

python - tf.train.Checkpoint 和 tf.train.Saver 之间的区别

machine-learning - 如何针对特定用例选择 CNN 模型?

python - tensorflow 值错误: Only call `sparse_softmax_cross_entropy_with_logits` with named arguments

linux - 如何避免 cmake 读取其 "system cache"$HOME/.cmake/

machine-learning - 如何确定 caffe blob 的输入尺寸

c++ - Caffe 中是否有训练函数可以从 C++ 代码训练网络?