作者ossianlin (linossian)
看板MATLAB
標題[問題] 關於影像處理使用cov "out of memory"
時間Sat May 30 22:31:43 2015
這個問題困擾了我快三個禮拜...應該更久...
不知道為甚麼都會out of memory 也上網查過解法但都沒甚麼解法...
學校實驗室電腦是32-bit的 記憶體2GB 目前只剩虛擬記憶體擴充那招沒用過
不過目前一直找不到Boot.ini 而且老師也認為不會這麼麻煩才是
實驗室學長建議從程式碼下手,目前就將前面步驟用了save/load法
不過進行covariance的步驟還是出現這狀況...
想不到辦法只好來這邊尋求答案...
以下先上程式碼:
load 'martix_X' %X為一輸入影像群之大矩陣,其大小為76800xN N為輸入影像張數
a = transpose(X);
cov_x = cov(single(a)); or cov_x = cov(double(a));
得到結果都是out of memory...
不填double/single則error bsxfun
現在卡在這段後面要再做eigen根本不能往下做...
跪求版上前輩指導了@@"
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.127.186.7
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1432996306.A.C81.html
1F:→ jatj: 打whos就可以看變數佔的大小 可以估算哪個佔太多空間 05/31 01:16
2F:→ celestialgod: 用迴圈算covariance上三角部分,用cov可能用到太多 05/31 09:13
3F:→ celestialgod: 記憶體 05/31 09:13
4F:→ celestialgod: 2G的電腦,系統大概用掉一半,matlab最多只有1G可以 05/31 11:22
5F:→ celestialgod: 使用,矩陣一大,真的很容易記憶體不足 05/31 11:22
6F:→ celestialgod: error bsxfun應該是因為取完平均要跟原矩陣做相減 05/31 11:24
7F:→ celestialgod: 時,發現原矩陣不是double.... 才出問題。 05/31 11:24
想問一下怎麼用迴圈算上三角部分@@?
Name Size Bytes Class Attributes
X 76800x5 384000 uint8
a 5x76800 384000 uint8
用whos得到的數據如上,memory得到的數據如下
Maximum possible array: 688 MB (7.214e+08 bytes) *
Memory available for all arrays: 1248 MB (1.308e+09 bytes) **
Memory used by MATLAB: 496 MB (5.201e+08 bytes)
Physical Memory (RAM): 2043 MB (2.143e+09 bytes)
另外如果算上三角部分之後求得eigenvalue的部分會受影響嗎?
因為現再要用cov去求得eig...
麻煩前輩們指點了@@"
※ 編輯: ossianlin (140.133.62.180), 05/31/2015 14:02:49
8F:→ celestialgod: 沒注意到你還有另立一個transpose... 05/31 14:39
9F:→ celestialgod: 這個是主要原因 05/31 14:39
10F:→ celestialgod: 直接cov(double(X'))試試看 05/31 14:41
還是一樣out of memory @@"
不過如果取消用trancepose就可以covariance了...
這邊有點忘記為什麼老師當初要我做trancepose了
依稀印象是老師說直接cov出來的答案好像是錯誤的...
想請教一下covariance真正用意為何...?
本身數學不是很好 想了解其原理何在?
※ 編輯: ossianlin (140.133.62.180), 05/31/2015 15:24:54
11F:→ celestialgod: 轉置前的COV是5X5...轉置後是76000 X 76000 05/31 15:27
12F:→ celestialgod: 記憶體會不夠是因為要存76000 x 76000的矩陣 05/31 15:27
13F:→ celestialgod: Requested 76000x76000 (43.0GB) array 05/31 15:28
14F:→ celestialgod: 只是我很好奇,這樣的變異數矩陣是有問題的... 05/31 15:29
15F:→ celestialgod: 只有五列...你要估計 76000*38000個參數qq 05/31 15:30
16F:→ celestialgod: 76001*38000 (更正) 05/31 15:32
17F:→ celestialgod: 至於cov的用意,我也不清楚你們的目的無從解釋 05/31 15:38