1
我有一個以下的matlab代碼,我不知道如何切片稱爲「數據」的矩陣。如何在matlab parfor循環中切分這個矩陣?
簡單地說,是什麼代碼所做的是:
在每次迭代中,創建一個重新排序稱爲「newOrder」和 調用一個函數「火車」與重新排序的矢量「y」和重新排序矩陣「數據」。 這裏,「重新排序」使用所有元素而不是它們的子集。循環運行速度非常關鍵,所以我很關心這個警告。
w = []; data = sparse(double(X(:,selTrain)));
parfor ci = 1:length(classes)
y = 2*(imageClass(selTrain)==ci)'-1;
newOrder = [find(y==1); find(y==-1)];
this_svm = train(y(newOrder), data(:, newOrder), ' -s 3 -B 1 -c 10 -q', 'col');
w(:,ci) = this_svm.w';
end
我沒有收到錯誤,但發出警告:變量數據在parfor循環中被編入索引但未被分片。這可能會導致不必要的通信開銷。
我需要爲組合多次重新排序做到這一點。 所以我花了很多時間絕望地嘗試一堆東西.. 任何幫助或建議將是偉大的。
謝謝。
您是否想要並行計算'data'矩陣的所有順序以同時運行多個SVM'train'?這並不完全清楚。你能給我更多的細節嗎? – Yamaneko 2012-08-15 01:29:28
並非所有的數據訂單。對於每個類,我想重新排序數據矩陣並調用火車功能。 – 2012-08-15 04:24:08
你得到的錯誤究竟是什麼?你可以添加到你的問題? – jmetz 2012-08-15 20:46:08