Machine learning 执行中的错误";转置;Caffe中的层

Machine learning 执行中的错误";转置;Caffe中的层,machine-learning,neural-network,deep-learning,caffe,pycaffe,Machine Learning,Neural Network,Deep Learning,Caffe,Pycaffe,我正在尝试使用Python层在Caffe中实现转置函数。 下面是相同的代码 但是,它正在抛出错误“在抛出boost::python::error\u的实例后调用terminate”atrestrape()方法 有人能解释一下我做错了什么吗 import caffe import numpy as np class transpose(caffe.Layer): def setup(self, bottom, top): assert len(bottom) == 1,

我正在尝试使用Python层在Caffe中实现转置函数。 下面是相同的代码

但是,它正在抛出错误“在抛出
boost::python::error\u的实例后调用terminate”
at
restrape()
方法

有人能解释一下我做错了什么吗

import caffe
import numpy as np

class transpose(caffe.Layer):

    def setup(self, bottom, top):
        assert len(bottom) == 1,            'requires a single layer.bottom'
        assert bottom[0].data.ndim == 2,    'requires matrix data'
        assert len(top) == 1,               'requires a single layer.top'

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

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

    def backward(self, top, propagate_down, bottom):
        pass
谢谢,,
Vijetha.

我认为你的
整形不正确。
尝试:


shape
重塑
的参数不是作为一个元组给出的,而是作为一个单独的参数给出的。

是关于置换层的讨论。它可能是相关的。该层的代码是可用的,或者。那么反向传递,也转置梯度呢?这很有效。谢谢。另外,反向方法正确吗?我对这个方法也不是很确定。正如你所评论的,我应该转置从顶部传递的上一个渐变吗?@VijethaGattupalli你需要设置底部[0]。使用顶部[0]进行区分。你需要转置…因此它将是底部[0]。diff=np.transpose(顶部[0]。diff)。我相信“通过”只会使底部[0]。diff=top[0].diff.如果我错了,请纠正我。@VijethaGattupalli pass意味着pass。这意味着我不知道底部[0]中会有什么。diff…为什么caffe要指定顶部[0]。diff到底部[0].diff?我猜重塑方法中的“通过”只会将底层的形状复制到顶层,因此反向方法中可能会发生类似的事情。但感谢您的澄清。我现在理解了如何编写它。
def reshape(self, bottom, top):
  top[0].reshape(bottom[0].data.shape[1], bottom[0].data.shape[0])