2014-01-14 60 views
8

想我已實現了以下功能Theano:重用編譯Theano功能

import theano.tensor as T 
from theano import function 
x = T.dscalar('x') 
y = T.dscalar('y') 
z = x + y 
f = function([x, y], z) 

當我嘗試運行它計算的曲線構造,功能得到優化和編譯。

如何從Python腳本和/或C++應用程序中重用此已編譯的代碼塊?

編輯: 目標是構建一個深度學習網絡,並在最終的C++應用程序中重用它。

+0

我遇到同樣的問題。你找到解決方案嗎? – Shai

+0

Theano似乎緩存了優化結果,因此任何後續調用都應該很快。儘管如此,在例如工作站重新啓動後,您必須再次進行優化。酸洗解決了這個問題。編譯一個Theano函數對象後,可以對其進行醃製,然後在需要時加載。 –

+0

但我可以從C/C++代碼中調用pickle函數嗎? – Shai

回答

7

目前這是不可能的。有用戶修改了Theano以允許酸洗Theano函數,但在取出時我們已經重新優化了圖形。

有一個允許Theano生成C++庫的Pull請求。用戶可以自己編譯它並將其用作普通的C++庫。 lib鏈接反對python lib並且需要安裝numpy。但是這還沒有準備好廣泛使用。

你的目標是什麼?節省編譯時間?如果這樣的話Theano已經緩存了它編譯的C++模塊,所以下次它被重用時,編譯將會更快。但是對於一個大圖,優化階段總是重做,如上所述,這可能需要很長時間。

那麼你的目標是什麼?

這是我們正在研究的內容。確保使用最新的Theano發行版(0.6),因爲它編譯速度更快。開發版本也快一點。

+0

我已將目標添加到原始問題中。猜猜我現在必須和盧亞一起去。 –

+0

你可以從C++調用python代碼。這可以讓你做你想做的事。但它要求安裝python,NumPy和Theano。不適合重新分配,但如果你控制環境,它可以工作。 – nouiz

+0

你會發佈一個鏈接到公關? –