2016-06-08 88 views
0

我爲我的論文使用MatrixToolkitsJava作爲神經網絡項目,並且在其中我需要使權重矩陣更大,並且稍後可能更小。我現在正在這樣做,創建一個新的矩陣並在實例化新值時複製現有的值,效率非常低,佔絕大多數時間。是否有一種將行和列添加到現有矩陣的有效方法?製作矩陣更大

+0

沒有辦法改變數組的大小,這就是爲什麼他們發明了一種叫做名單。你也許可以製作一個數組列表的數組列表。 – Gendarme

+0

我沒有使用數組,我使用MatrixToolkitsJava中的Matrix。我只是想知道是否有更有效的計算方法來調整Matrix的大小,甚至是複製Matrix中的值。 – Beez

回答

0

如前所述,您可以使用列表,但是如果您在使用數組時遇到問題,則可以創建一個方法來創建新數組,然後替換所存儲的引用。

如果您使用System.arrayCopy(Object src, int srcPos, Object dest, int destPos, int length)它將足夠快,如果你不使用巨型陣列。

編輯:我不敢相信我沒有想到這一點。只需使用矩陣乘法來複制數據。例如,要做2×3×3,只需做[2,2]×[(1,0),(0,1),(0,0)] = [2,3] => [ (1,0,0),(0,1,0)] x [2,3] = [3,3]

+0

它們不是數組,它們是來自MTJ的矩陣,用於計算有效的線性代數。他們變得相當大,這是問題所在。他們可以輕鬆達到數千行/列。這就是我目前正在做的,複製我擁有的數據並添加到新數據中,但正如我所說的那樣,效率非常低,往往會減慢速度。不過,我懷疑arrayCopy對於MTJ矩陣是有效的。 – Beez

+0

無論如何要事先弄清楚你需要多大?否則,我會建議讓它比你想象的要大得多。 –

+0

不幸的是,這裏的目標是建立一個增長的神經網絡,希望能夠找到合適的大小。使矩陣大於他們需要的另一個問題是,他們越大,程序越慢,相當大。因此,使它們變得非常大並且填充它們會導致比在我去的時候增長它們更慢的程序。 – Beez