Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pycafe:如何在python层中创建自定义权重?_Python_Caffe_Pycaffe - Fatal编程技术网

Pycafe:如何在python层中创建自定义权重?

Pycafe:如何在python层中创建自定义权重?,python,caffe,pycaffe,Python,Caffe,Pycaffe,我已经搜索网络和caffe源代码有一段时间了,没有任何解决方案,但在自定义应用程序神经网络中,我正在构建一些。前向传递和后向传递在功能上运行良好,我可以在设置例程中创建自定义权重参数,但尽可能尝试,我无法让caffe为我的层设置“官方”权重。当然,这将允许更好的快照、更容易的解算器实现等 你知道我在这里遗漏了什么吗 [编辑:下面显示的层中的代码。为了简洁起见,删除了一些内容。此层的目的是为卷积层中扁平的、激活的过滤器添加颜色] def setup(self, bottom, top):

我已经搜索网络和caffe源代码有一段时间了,没有任何解决方案,但在自定义应用程序神经网络中,我正在构建一些。前向传递和后向传递在功能上运行良好,我可以在设置例程中创建自定义权重参数,但尽可能尝试,我无法让caffe为我的层设置“官方”权重。当然,这将允许更好的快照、更容易的解算器实现等

你知道我在这里遗漏了什么吗

[编辑:下面显示的层中的代码。为了简洁起见,删除了一些内容。此层的目的是为卷积层中扁平的、激活的过滤器添加颜色]

def setup(self, bottom, top):
    global weights
    self.weights = np.random.random((CHANNELS))

def reshape(self, bottom, top):
    top[0].reshape(1,2*XDIM,2*YDIM)

def forward(self, bottom, top):
    arrSize = bottom[0].data.shape
    #Note: speed up w/ numpy ops for this later...
    for j in range(0, 2*arrSize[1]):
            for k in range(0, 2*arrSize[2]):
                    # Set hue/sat from hueSat table.
                    top[0].data[0,j,k] = self.weights[bottom[0].data[0,int(j/2),int(k/2)]]*239

def backward(self, top, propagate_down, bottom):
    diffs = np.zeros((CHANNELS))
    for i in range(0,300):
            for j in range(0,360):
                    diffs[bottom[0].data[0,i/2,j/2]] = top[0].diff[0,i,j]

    #stand in for future scaling
    self.weights[...] += diffs[...]/4 

是来自未来的我!以下是如何解决您的问题:

最近,blob添加是在Caffe中用Python实现的。下面是一个这样做的示例层:

class Param(caffe.Layer):
    def setup(self, bottom, top):
        self.blobs.add_blob(1,2,3)
        self.blobs[0].data[...] = 0

    def reshape(self, bottom, top):
        top[0].reshape(10)

    def forward(self, bottom, top):
        print(self.blobs[0].data)
        self.blobs[0].data[...] += 1

    def backward(self, top, propagate_down, bottom):
        pass

要访问差异,只需使用self.blobs[0].diff[…],您就可以全部设置好了。解算器将处理其余部分。有关详细信息,请参见

您的问题似乎缺少您需要帮助的代码。@阿米尔,请不要重新介绍,caffe的未来如何?我觉得很不错。如果您想实现python,文档几乎不存在/分散到银河系的四个角落,但是caffe本身非常好。GoogLeNet在它中的实现相当简洁,还有其他几个伟大的ConvNet。不过,学习曲线相当陡峭。