2016-08-18 36 views
0

我是Theano和Deep Learning中的新成員,我在Theano中運行我的實驗,但我希望通過直接使用GPU進行數據增量來減少每個時代花費的時間。在Theano中使用GPU進行數據增強

不幸的是我不能使用PyCuda,所以我想知道是否有可能使用Theano進行基本的數據增強。例如圖像中的翻譯或旋轉,同時我在使用Numpy的CPU中使用scipy功能,但速度很慢。

+0

我會看看[這個回購](https://github.com/benanne/kaggle-ndsb)。它是由[Lasagne](https://github.com/Lasagne/Lasagne)項目創建者編寫的Kaggle競賽代碼。在他的解決方案中,他使用CPU完成所有數據增強,並將每個增量批次放入隊列中,而GPU從隊列和列車中抓取批次。 – gobrewers14

回答

0

如果數據增加是您的計算圖的一部分,並且可以在GPU上執行,那麼它自然會在GPU上執行。所以這個問題縮小到「是否可以在GPU上使用Theano張量操作來完成常見的數據增強任務」。

如果您要應用的轉換僅僅是翻譯,您可以使用theano.tensor.roll,然後進行一些屏蔽。如果你想旋轉,請看this implementation of spatial transformer network。特別是看看_transform函數,它將輸入一個矩陣theta,其中每個樣本和實際樣本都有一個2x3變換(左邊的2x2是旋轉,右邊的1x2是平移),然後將旋轉和平移應用到那些樣品。我沒有確認它是爲GPU優化的(也就是說,該功能的瓶頸可能會在CPU上執行,這會使其不適合您的使用情況),但這是一個很好的起點。