2015-12-28 59 views
2

我一直在尋找網絡和咖啡源代碼一段時間沒有任何解決方案可言,但在自定義應用程序神經網絡中,我正在構建一些custom layers in python。前向傳球和後傳球在功能上運作良好,我可以在我的設置例程中創建自定義的體重參數,但嘗試一下,因爲我可能無法讓咖啡爲我的圖層設置「官方」權重。這當然會允許更好的快照,更簡單的求解器實現等。Pycaffe:如何在python圖層中創建自定義權重?

任何想法我在這裏失蹤?

[編輯:下面的圖層代碼。爲了簡潔起見,刪除了一些內容。此層的目的是爲卷積層添加變平的激活濾波器的顏色]

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 
+0

您的問題似乎缺少您需要幫助的代碼。 – Blackwood

+0

修正了,謝謝! –

+0

@Amir請不要重新介紹[tag:machine-learning]和[tag:neural-network] – Shai

回答

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 

要訪問的diff,只需使用self.blobs [0]爲.diff [...],你將所有設置。解決者將負責其餘部分。欲瞭解更多信息,請參閱https://github.com/BVLC/caffe/pull/2944

+0

caffe的未來如何看? – Shai

+2

它對我來說很不錯。如果你正在尋找python實現,那麼文檔實際上是不存在的或散佈在銀河系的四個角落,但caffe本身非常好。 GoogLeNet相當簡潔地實施,以及其他幾個偉大的約束。學習曲線雖然很陡。 –

相關問題