2015-05-19 33 views
4

我正在使用梯度下降和邏輯迴歸來編寫紅寶石中的機器學習算法。紅寶石中2個矩陣之間的點積,最有效的方法

算法工作正常,除了在紅寶石矩陣之間的點積很慢。

我開始使用gem RubyPython,它允許您將python庫(如numpy)導入到ruby中並使用它的函數。

numpy的表現令人印象深刻。該應用程序開始運行速度提高了1000%,但我總是在半途中獲得segmentation fault

有沒有人知道任何其他方式來加快紅寶石2矩陣的點積?

+1

你是怎麼做的紅寶石,沒有numpy的東西是什麼? –

+1

這裏有很多Ruby的寶石,而不需要在Ruby中使用Python。你有嘗試過嗎?如果可能的話,我會盡量避免使用RubyPython。例如https://github.com/SciRuby/nmatrix和http://rb-gsl.rubyforge.org/ –

+0

我試圖安裝nmatrix,它總是失敗,我相信,因爲它缺少ATLAS,我無法在MAC中安裝ATLAS -OSX。總是出錯。我會試試rb-gsl。謝謝@MaxWilliams – Leon

回答

5

Ruby實際上有一個內置的matrix庫。您可以通過致電

require 'matrix' 

您可以創建一個矢量對象並獲取它的內積。例如,讓我們創建兩個矢量

a = Vector[1,3,-5] 
b = Vector[4,-2,-1] 

a.inner_product(b) 
=> 3 
+0

向量加速了很多謝謝 – Leon

+0

'Vector.send(:new,existing_array)' - 使用變量而不是硬編碼的唯一方法數組? – xxjjnn

+0

'Vector [* existing_array]'也適用 –