【python debug】python常見編譯問題解決方法_2

?

序言

  • 記錄python使用過程中碰到的一些問題及其解決方法
  • 上一篇:python常見編譯問題解決方法_1

1. PermissionError: [Errno 13] Permission denied: ‘/lost+found’

  • 修改前:
  • 修改后(解決):
  • 此外,可能文件夾已被打開,也可能是無權限打開,或者打開一個文件而不是文件夾

2. No module named ‘lark’

  • 報錯:ModuleNotFoundError: No module named ‘lark’

  • 解決方法:

    python3 -m pip install lark-parser
    

3. RuntimeError: Tensors must have same number of dimensions: got 3 and 2

  • 報錯:有A[2, 16]、B[2, 4]兩個tensor變量, 使用torch.cat((A, B), 1)拼接卻報錯
  • 解決方法:注意到模型輸出帶梯度,如下截圖。如果不需要保留梯度信息,可以在變量變換之前加.detach()或.data調用,分離梯度信息
  • tensor維度合并報錯,類似但不是
  • tensor維度合并報錯,類似但不是

4. RuntimeError: Can’t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead

  • 同上,在tensor轉換為list的過程中碰到

5. RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

  • 報錯:需要梯度但是沒有梯度信息
  • 報錯原因1:這里的loss默認的requires_grad是False,因此在backward()處不會計算梯度,導致出錯
  • 報錯原因2:就是loss本身沒梯度,所以調用loss.backward()后向傳播時報錯,沒梯度的原因可能是loss_function的output沒有梯度,注意檢查

6. RuntimeError: Trying to backward through the graph a second time, but the saved intermediate results have already beed freed. Specify retain_grad=True when calling .backward() or autograd.grad() the first time.

  • 解決:需要更新的中間結果加.data分離梯度信息

7. RuntimeError: Input and hidden tensors are not at the same device, found input tensor at cuda:0 and hidden tensor at cpu

  • 報錯:兩個tensor不在同一設備上device

  • 解決:添加.to(Device解決),tensor變量需要保持在同一個設備上

  • 參考:數據、網絡、損失函數放到GPU,init放到GPU或者model.to(Device),model初始化時.to(Device)

8. AttributeError: ‘torch.dtype’ object has no attribute ‘type’

  • 報錯:使用np.mean(xx)去計算張量xx的均值

  • 解決:np.mean可以操作list和array,但是此處的loss.data類型是torch.tensor, 需要使用torch.mean進行運算,torch.mean得到的結果也是tensor

  • 補充:獲取張量的值 tensor.item()

9. ImportError: cannot import name ‘TypeAlias’ from ‘typing_extensions’

  • 或報錯:TypeError: Plain typing_extensions.Self is not valid as type argument
  • 原因:以上兩個報錯都是typing_extensions版本過舊,使用了3.7.4

  • 解決方法:直接升級typing_extensions版本

    conda install typing_extensions=4.10.0	# 或其他版本
    

10. Torch.cuda.is_available()顯示GPU Driver過老

  • 報錯:The NVIDIA driver on your system is too old, torch.cuda.is_available()=False
  • 分析:GPU Driver版本11.1,并不老,我之前是通過如下命令在conda環境安裝torch:

    pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
    
  • 在網上查了這種情況需要重新裝一下cuda配套的pytorch版本

  • 原因:不是GPU驅動版本老,而是pytorch版本和cuda版本不匹配

  • 解決方法:重新安裝pytorch,如下

    • 在該網站 https://pytorch.org/get-started/previous-versions/ 搜索cuda 11.1

    • 按照該命令重裝后torch.cuda.is_available()查詢正常

      # CUDA 11.1
      pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
      

?


【參考文章】
[1]. Permission denied解決方案1
[2]. Permission denied解決方案2
[3]. 不保留梯度信息
[4]. 中間變量添加.data分離梯度信息
[5]. .data和.detach()的區別
[6]. pytorch和cuda版本不匹配

created by shuaixio, 2024.03.03

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 熱題 100_接雨水

題解一: 按列求:分別考慮每一列的雨水高度,某列的雨水高度只與其左側最高墻和右側最高墻有關,一種情況是該列比左右側的墻都低,則根據木桶效應該列雨水高度為min(左側墻高,右側墻高)-列高,而其余…

智能駕駛及相關零部件攝像頭毫米波雷達激光雷達和芯片滲透率

一、總體情況 乘聯會數據顯示,1月1日至1月28日,全國乘用車廠商新能源車批發銷量為56.7萬輛,同比增長76%,環比下降38%;國內新能源車市場零售銷量為59.6萬輛,同比增長92%,環比下降24%。 二、銷…

考研總計劃(基礎篇)

分為數學,專業課,英語三個部分 數學規劃表 高數基礎:3月初到4月15號 具體實行計劃:分為看課日和寫題日 看課日:早上10點到12點半看課,19:30到21:30繼續看課。 寫題日:早上10點到12點半復習前一天的題目&#xff0…

【word】引用文獻如何標注右上角

一、在Word文檔中引用文獻并標注在右上角的具體步驟如下 1、將光標移動到需要添加文獻標注的位置: 2、在文檔上方的工具欄中選擇“引用”選項: 3、點擊“插入腳注”或“插入尾注”: ①如果選擇的是腳注,則腳注區域會出現在本頁的…

多路轉接之epoll

常用的三個API: epoll_create(); //例如 int epfd epoll(10);創建一棵有10個結點的紅黑樹,注意:這個數只是對內核建議的數值,內核參照這個參數去構建epoll_ctrl();//參數2 op可以取值 EPOLL_CTL_ADD/MOD/DELevents:EPOLLIN/…

Professor教誨-學術筆記1

關于指導學生 自己帶的學生,要把文章從頭到尾檢查好了,再發給professor要至少留給professor一周的時間改文章,太遲了不如放棄DDL要在合作中,充分尊重合作者認真對待向別人求推薦信這件事,別人找你推薦也要慎重&#x…

成為大佬之路--linux軟件安裝使用第000000025篇--linux docker安裝mysql

安裝 1.拉取鏡像 docker pull centos/mysql-57-centos7 2.啟動mysql docker run -di --nametensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 centos/mysql-57-centos7

Pyglet圖形界面版2048游戲——詳盡實現教程(上)

目錄 Pyglet圖形界面版2048游戲 一、色塊展示 二、繪制標題 三、方陣色塊 四、界面布局 五、鍵鼠操作 Pyglet圖形界面版2048游戲 一、色塊展示 準備好游戲數字的背景顏色,如以下12種: COLOR ((206, 194, 180, 255), (237, 229, 218, 255), (23…

常見Vue原理面試題

1. Vue的響應式原理是什么?請詳細說明Object.defineProperty()和Proxy的區別和用法。 響應式原理:Vue中采用了數據劫持的方式,通過Object.defineProperty()函數來監聽數據變化,并在數據變化時觸發對應的更新函數。 Object.define…

SpringCloud負載均衡源碼解析 | 帶你從表層一步步剖析Ribbon組件如何實現負載均衡功能

目錄 1、負載均衡原理 2、源碼分析 2.1、LoadBalanced 2.2、LoadBalancerClient 2.3、RibbonAutoConfiguration 2.4、LoadBalancerAutoConfiguration 2.5、LoadBalancerIntercepor? 2.6、再回LoadBalancerClient 2.7、RibbonLoadBalancerClient 2.7.1、DynamicServe…

OpenCV 4基礎篇| OpenCV圖像的拼接

目錄 1. Numpy (np.hstack,np.vstack)1.1 注意事項1.2 代碼示例 2. matplotlib2.1 注意事項2.2 代碼示例 3. 擴展示例:多張小圖合并成一張大圖4. 總結 1. Numpy (np.hstack,np.vstack) 語法結構: retval np.hstack(tup) # 水平…

工作日記:JavaScript fill() 方法

定義 fill() 方法用于將一個固定值替換數組的元素。 語法 array.fill(value, start, end) value:必填。要填充的值 start:可選。開始填充位置 end:可選。結束填充位置(默認是數組的長度:array.length)…

提取拼多多店鋪商家電話的爬蟲軟件

拼多多是中國知名的團購電商平臺,許多用戶在購物時都希望能夠直接聯系到店鋪商家,以便獲得更多的產品信息或解決問題。在這篇文章中,我們將介紹如何使用Python編寫一個爬蟲軟件,來提取拼多多店鋪商家電話。 首先,我們…

c++之通訊錄管理系統

1,系統需求 通訊錄是一個記錄親人,好友信息的工具 系統中需要實現的功能如下: 1,添加聯系人:向通訊錄中添加新人,信息包括(姓名,性別,年齡,聯系電話&#…

構建高效的接口自動化測試框架思路

在選擇接口測試自動化框架時,需要根據團隊的技術棧和項目需求來綜合考慮。對于測試團隊來說,使用Python相關的測試框架更為便捷。無論選擇哪種框架,重要的是確保 框架功能完備,易于維護和擴展,提高測試效率和準確性。今…

IntelliJ IDEA 的常用快捷鍵

IntelliJ IDEA 的常用快捷鍵非常多,這些快捷鍵可以幫助你更高效地編寫代碼。以下是一些常用的快捷鍵總結: 基礎操作 CtrlN:查找類CtrlShiftN:查找文件CtrlAltL:格式化代碼AltInsert:生成代碼(…

信息安全技術第1章——信息網絡安全基本概念

課程介紹 網絡信息安全是醫學信息工程專業的限選課。主要圍繞計算機網絡安全所涉及的主要問題進行講解,內容包括:對稱密碼與公鑰密碼的基本原理、相關算法及應用。電子郵件的安全,IP安全,Web安全,惡意軟件及防火墻等內…

UI自動化-(web端窗口截圖文件上傳-實操入門)

1、窗口截圖 1. UI自動化中,為什么需要進行窗口截圖? 調試和故障排除:截圖可以直觀地查看界面的狀態,快速識別和解決問題。當自動化過程中出現錯誤或異常時,通過查看截圖可以確定是否是界面元素的問題,例…

C++ opencv 學習

文章目錄 1、創建窗口2、讀取圖片3、視頻采集4、Mat的使用5、異或操作6、通道分離,通道合并7、色彩空間轉換8、最大值、最小值9、繪制圖像10、多邊形繪制11、隨機數12、鼠標實時繪制矩形13、歸一化14、resize操作15、旋轉翻轉16、視頻操作17、模糊操作18、高斯模糊操…

SpringBoot整合MyBatis實現增刪改查

?作者簡介:大家好,我是Leo,熱愛Java后端開發者,一個想要與大家共同進步的男人???? ??個人主頁:Leo的博客 ??當前專欄: 循序漸進學SpringBoot ?特色專欄: MySQL學習 ??本文內容: SpringBoot整合MyBatis實現增刪改查 ??個人知識庫: Leo知識庫,歡迎大家訪…