作者f496328mm (123)
看板R_Language
標題[問題] R 記憶體用量
時間Fri Mar 24 22:47:54 2017
文章分類提示:
- 問題: 當你想要問問題時,請使用這個類別。
建議先利用 google 爬文,如輸入
「想查詢的關鍵字 site:webptt.com/m.aspx?n=/*/R_Language/」。
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
http://imgur.com/4UN3EJk
如圖
我跑的物件總共也才不到6gb
可是看系統監控 卻已經有17.6gb在背景了
到底是為什麼阿?? 而且我也執行過gc()了
我原本打算轉換所有的data , 目前因為ram的關係
只能轉1/4部份 有點麻煩 有什麼辦法可以解決?
另外
如果我改到 python 去做轉換 會比較省ram嗎?
謝謝
ps: 我是把圖片轉換成 pixel
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.103.52
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1490366877.A.D7F.html
※ 編輯: f496328mm (114.42.103.52), 03/24/2017 22:48:47
1F:→ andrew43: 在R上承載資料的是什麼物件或類別?整數類矩陣嗎? 03/24 22:50
2F:→ andrew43: 省不省記憶體應該還是和實做過程比較有關係。 03/24 22:51
3F:→ andrew43: 可以的話,提供一個可重複的虛假例子。 03/24 22:51
舉例來說 一張圖片 480*640*3 這樣
因為我想到python做vgg16 所以先用R整理成 224*224*3
但只我轉換5000張圖片後 記憶體就快爆了
※ 編輯: f496328mm (114.42.103.52), 03/24/2017 22:57:00
4F:→ celestialgod: 你怎麼寫? 03/24 23:02
5F:→ andrew43: 如果是迴圈,每次處理完把物件存RData再rm()掉。 03/24 23:02
6F:→ andrew43: 把資料輸出成實體檔案,之後再餵給python 03/24 23:04
7F:→ andrew43: R的整數似乎都是32bit,此時是比較浪費,但應該有辦法處 03/24 23:06
8F:→ andrew43: 理才對。 03/24 23:07
我先抓好每個檔案的位置 然後取5000個出來
之後一次轉一張圖片 最後整理成一個data.table出來這樣
用sapply這樣去做
python的整數是不是佔比較少ram?
因為我train有2萬張圖片 但是test有將近8萬張圖片QQ
※ 編輯: f496328mm (42.78.113.162), 03/24/2017 23:27:05
9F:→ celestialgod: 重點是轉的過程... 03/24 23:40
10F:→ celestialgod: 你應該是在轉的過程過了什麼操作才會用到那麼多RAM 03/24 23:40
11F:→ celestialgod: 你給這樣的資訊,我也沒辦法給什麼建議 03/24 23:41
這是function
https://gist.github.com/f496328mm/a342cb39e8ae3b84f01be29a46bb81da
這是main
https://gist.github.com/f496328mm/44116adf79356f01e761cfe72627d213
※ 編輯: f496328mm (114.42.103.52), 03/25/2017 00:28:24
12F:→ celestialgod: train.variable=cbind( img.name , train.variable) 03/25 00:59
13F:→ celestialgod: 瓶頸在這行 03/25 00:59
14F:→ celestialgod: 還有 colnames(train.variable) 03/25 01:00
15F:→ celestialgod: data.table不是這樣用的... 你這樣會做deep copy... 03/25 01:00
ok 感謝 我晚點改改看
※ 編輯: f496328mm (114.42.103.52), 03/25/2017 01:09:52