[問題] 關於影像處理使用cov "out of memory"

看板MATLAB作者 (linossian)時間10年前 (2015/05/30 22:31), 10年前編輯推噓0(0017)
留言17則, 2人參與, 最新討論串1/1
這個問題困擾了我快三個禮拜...應該更久... 不知道為甚麼都會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://www.ptt.cc/bbs/MATLAB/M.1432996306.A.C81.html

05/31 01:16, , 1F
打whos就可以看變數佔的大小 可以估算哪個佔太多空間
05/31 01:16, 1F

05/31 09:13, , 2F
用迴圈算covariance上三角部分,用cov可能用到太多
05/31 09:13, 2F

05/31 09:13, , 3F
記憶體
05/31 09:13, 3F

05/31 11:22, , 4F
2G的電腦,系統大概用掉一半,matlab最多只有1G可以
05/31 11:22, 4F

05/31 11:22, , 5F
使用,矩陣一大,真的很容易記憶體不足
05/31 11:22, 5F

05/31 11:24, , 6F
error bsxfun應該是因為取完平均要跟原矩陣做相減
05/31 11:24, 6F

05/31 11:24, , 7F
時,發現原矩陣不是double.... 才出問題。
05/31 11:24, 7F
想問一下怎麼用迴圈算上三角部分@@? 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

05/31 14:39, , 8F
沒注意到你還有另立一個transpose...
05/31 14:39, 8F

05/31 14:39, , 9F
這個是主要原因
05/31 14:39, 9F

05/31 14:41, , 10F
直接cov(double(X'))試試看
05/31 14:41, 10F
還是一樣out of memory @@" 不過如果取消用trancepose就可以covariance了... 這邊有點忘記為什麼老師當初要我做trancepose了 依稀印象是老師說直接cov出來的答案好像是錯誤的... 想請教一下covariance真正用意為何...? 本身數學不是很好 想了解其原理何在? ※ 編輯: ossianlin (140.133.62.180), 05/31/2015 15:24:54

05/31 15:27, , 11F
轉置前的COV是5X5...轉置後是76000 X 76000
05/31 15:27, 11F

05/31 15:27, , 12F
記憶體會不夠是因為要存76000 x 76000的矩陣
05/31 15:27, 12F

05/31 15:28, , 13F
Requested 76000x76000 (43.0GB) array
05/31 15:28, 13F

05/31 15:29, , 14F
只是我很好奇,這樣的變異數矩陣是有問題的...
05/31 15:29, 14F

05/31 15:30, , 15F
只有五列...你要估計 76000*38000個參數qq
05/31 15:30, 15F

05/31 15:32, , 16F
76001*38000 (更正)
05/31 15:32, 16F

05/31 15:38, , 17F
至於cov的用意,我也不清楚你們的目的無從解釋
05/31 15:38, 17F
文章代碼(AID): #1LQSdIo1 (MATLAB)
文章代碼(AID): #1LQSdIo1 (MATLAB)