簡體   English   中英

在python中構建自定義Caffe層

[英]Building custom Caffe layer in python

解析了許多關於在Python中構建Caffe圖層的鏈接后,我仍然難以理解一些概念。 有人可以澄清一下嗎?

我仍然缺少的是:

  1. setup()方法:我應該在這做什么? 為什么在例子中我應該將'底部'參數的長度與'2'進行比較? 為什么它應該是2? 它似乎不是批量大小,因為它是隨意的? 據我所知,底部是blob,然后第一個維度是批量大小?
  2. reshape()方法:據我所知'底部'輸入參數是下層的blob,'top'參數是上層的blob,我需要根據我的計算的輸出形狀使用正向傳遞重塑頂層。 但是,如果這些形狀不是從傳遞變為傳球,只有重量變化,為什么我需要在每個前進傳球中執行此操作?
  3. reshapeforward方法使用了'top'輸入參數的0個索引。 為什么我需要使用top[0].data=...top[0].input=...而不是top.data=...top.input=... 這個指數怎么樣? 如果我們不使用此頂級列表的其他部分,為什么以這種方式暴露它? 我可以懷疑它或C ++骨干的巧合,但確切地知道它會很好。
  4. reshape()方法,行:

     if bottom[0].count != bottom[1].count 

    我在這做什么 為什么它的尺寸又是2? 我在這里算什么? 為什么blob(0和1)的兩個部分在某些成員( count )的數量上應該相等?

  5. forward()方法,我在這行中定義的:

     self.diff[...] = bottom[0].data - bottom[1].data 

    如果我定義它,在前進路徑后使用它? 我們可以使用嗎?

     diff = bottom[0].data - bottom[1].data 

    相反,在這個方法中稍后計算損失,而不是分配給self ,或者它是否有某種目的?

  6. backward()方法:這是關於什么的: for i in range(2): :? 為什么范圍又是2?

  7. backward()方法, propagate_down參數:為什么定義? 我的意思是如果它的True,漸變應該被分配給我的bottom[X].diff ,但是為什么有人會調用一些方法,如果它什么都不做並且仍然在里面循環,它會對propagate_down = False無效。

對不起,如果這些問題太明顯了,我就無法找到一個好的指南來理解它們並在這里尋求幫助。

你在這里問了很多問題,我會給你一些亮點和指示,希望能為你澄清一些問題。 我不會明確回答你的所有問題。

看起來你對blob和圖層的輸入/輸出之間的區別最為困惑。 事實上,大多數的層具有單個斑點作為輸入和單個斑點作為輸出,但它並非總是如此。 考慮一個損失層:它有兩個輸入:預測和地面實況標簽。 因此,在這種情況下, bottom是長度為2 (!)的向量, bottom[0]是表示預測的(4-D)斑點,而bottom[1]是帶有標簽的另一個斑點。 因此,在構建這樣的圖層時,您必須確定您具有完全(硬編碼)的2個輸入blob(例如,參見AccuracyLayer定義中的ExactNumBottomBlobs() )。

對於top blob也是如此:在大多數情況下,每層都有一個top ,但並非總是如此(參見例如AccuracyLayer )。 因此, top也是4-D blob的向量 ,每個top一個blob。 大多數情況下,該向量中只有一個元素,但有時您可能會找到多個元素。

我相信這涵蓋了您的問題1,3,4和6。

reshape() (Q.2)開始,每次正向傳遞都不會調用此函數,只有在設置net以為輸入/輸出和參數分配空間時才會調用此函數。
有時,您可能希望更改網絡的輸入大小(例如,對於檢測網絡),然后您需要為網絡的所有層調用reshape()以適應新的輸入大小。

至於propagate_down參數(Q.7):由於一個圖層可能有一個以上的bottom ,原則上你需要在backprop期間將漸變傳遞給所有 bottom 但是,損耗層label底部的漸變是什么意思? 有些情況下,您不希望傳播到所有 bottom :這是此標志的用途。 (這是一個帶有三個bottom s的損失層的示例 ,期望所有這些都具有漸變)。

有關更多信息,請參閱"Python"圖層教程

為什么它應該是2?

那個具體的要點是談論歐幾里德損失層。 歐幾里德損失是2個向量之間的均方誤差。 因此,輸入blob中必須有2個向量到此層。 每個向量的長度必須相同,因為它是元素差異。 您可以在重塑方法中看到此檢查。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM