2016-12-06 114 views
1

我想訓練一個迴歸網絡,它的輸出是兩個座標(x1,y1)和(x2,y2)。 我的問題是:如果我想訓練網絡應該我的輸出是分開的? 我的意思是應該我的輸出是這樣的:如何用2D輸出訓練網絡? (python,Keras)

[x1,y1,x2,y2] 

或者是有辦法堆疊起來,如:

[(x1,y1),(x2,y2)] 

在此先感謝

+0

您可以明顯重塑輸出以添加維度;網絡仍然可以返回一個向量。我認爲這個問題是爲什麼你想要二維輸出 - 輸出值是否有額外的限制? –

+0

他們是特定的座標,我懷疑如果我把它給像網絡[x1,y1,x2,y2],網絡不會考慮它們之間的關係,所以我想把它傳遞給網絡。我真的嗎? – Panda

+0

以及我應該如何設置[(x1,y1),...]的密集層的設置,我的意思是什麼應該是在這個輸出神經元的數量? model.add(Dense(2,init ='uniform',activation ='sigmoid')) – Panda

回答

1

RepeatVector是有這個目的(見Keras文檔)。

您希望您的輸出形狀爲(2, 2)或兩個座標的數組,每個座標各有兩個條目。

num_outputs = 2 
num_elements = 2 

在將處理輸入的圖層添加到網絡後,添加RepeatVector。這將使得有可能獲得一組數據作爲輸出。最終層需要輸出num_elements所以例如:

model.add(RepeatVector(num_outputs)) 
# Optional layers can be inserted here 
model.add(Dense(num_elements)) 

簡而言之,重複載體複製先前層的內容被髮送到另外的節點,並且每個路徑將輸出的num_elements陣列,給你所需的輸出形狀。請注意,您的訓練數據(標籤)也必須由(2, 2)陣列組成。

+0

謝謝,但與[x1,x2,...]比較,它會改變結果嗎? – Panda

+0

我知道它可以在自動編碼器中有效,CNN怎麼樣? – Panda

+0

我的教育猜想是:只要x1,x2等的位置在輸入數據中不變,並且您知道如何從輸出中解析座標,則可能不會。我將CNN看作是從圖像中學習特徵的有效方法,並且不要認爲它們對輸出的含義有很大影響。大多數網絡在卷積之後最終具有致密層。 – milez