pytorch 常用問題解決

2022-08-12 03:06:11 字數 955 閱讀 4607

1、runtimeerror: cuda runtime erorr (77): an illegal memory access was encountered at

在使用命令前面加上cuda_launch_blocking=1(禁止並行的意思)(設定os.environ['cuda_launch_blocking'] = 1),也就是命令形式為:cuda_launch_blocking=1 python3 train.py

2、error: unexpected bus error encountered in worker. this might be caused by insufficient shared memory (shm)

出現這個錯誤的情況是,在伺服器上的docker中執行訓練**時,batch size設定得過大,shared memory不夠(因為docker限制了shm).解決方法是,將dataloader的num_workers設定為0.

3、優化器的weight_decay項導致的隱蔽bug,我們都知道weight_decay指的是權值衰減,即在原損失的基礎上加上乙個l2懲罰項,使得模型趨向於選擇更小的權重引數,起到正則化的效果。但是我經常會忽略掉這一項的存在,從而引發了意想不到的問題。

引用別人的例子:這次的坑是這樣的,在訓練乙個resnet50的時候,網路的高層部分layer4暫時沒有用到,因此也並不會有梯度回傳,於是我就放心地將resnet50的所有引數都傳遞給optimizer進行更新了,想著layer4應該能保持原來的權重不變才對。但是實際上,儘管layer4沒有梯度回傳,但是weight_decay的作用仍然存在,它使得layer4權值越來越小,趨向於0。後面需要用到layer4的時候,發現輸出異常(接近於0),才注意到這個問題的存在。雖然這樣的情況可能不容易遇到,但是還是要謹慎:暫時不需要更新的權值,一定不要傳遞給optimizer,避免不必要的麻煩。

oom問題解決

dalvik虛擬機會為應用程式分配固定大小的heap 如果使用超過了這個heap的大小,且沒有可被 物件,就會報oom。多張較大會迅速占用空間造成oom。我們可以使用一下的方法來減少這種情況的產生 1.減少單張的大小,根據螢幕大小來對bitmap做resize。private void setima...

too many open files問題解決辦法

今天用 往liunx中寫檔案,檔案很多 執行一會就日誌上就報錯 too many open files 結果找了半天才解決這個問題,現在給大家分享一下。首先用 ulimit a 命令看看linux的open files值是多少,結果乙隻有1024,不夠用的。然後修改linux的配置檔案,修改 etc...

haoop問題解決

1.namenode不能啟動 cannot lock storage tmp dfs name.the directory is already locked.上網查了查,基本上有兩個辦法 1.重新格式化namenode 2.許可權問題 chown r hadoop hadoop tmp dfs n...