Last Updated on 2023-03-02 by Clay
問題描述
前一陣子,我在研究如何使用 Transformer 強化學習 (Transformer Reinforcement Learning, TRL) 這一技術/套件時,我跑官方的腳本會出現一個關於 numpy 的錯誤。其錯誤訊息如下:
module 'numpy' has no attribute 'item'
初見時的第一感,自然是我的資料哪裡整理得格式不對了、前處理哪邊弄錯了,這才導致我的 numpy 在呼叫時可能缺少某個屬性…… 但嘗試追了一下問題之後發現,不對啊?問題的根源是 TRL 套件、而且報錯中指名的錯誤是 module ‘numpy’ 缺乏屬性,所以並不是之後可能應用到的 np.array
。
解決方法
在網路上查詢了一下之後,發現另外一個很常見的類似錯誤是 module 'numpy' has no attribute 'object'
—— 因為 object 在 numpy 1.24 版本時已經遭到棄用。
那麼如果是自己寫的程式碰到這種問題,自然是修改自己的寫法就能夠避免;但我今天遇到的問題是出在我所使用的深度學習套件上。所以要解決這種問題,自然只剩下兩種方法:
- 把我所使用的 TRL 套件更新到最新(然而,我發現最新版本仍然會存在這樣的 numpy 問題,可能他們開發時使用的就是較舊的版本)
- 自行把當前環境的 numpy 版本降版(downgrade),比方說回滾到 1.20 版
然後因為我所工作的伺服器,大部分的環境都是同事之間共用的…… 所以我只好自行建立另外的虛擬環境來安裝自己需要的版本 QQ。
不過,總之更改版本或更改 code 就能解決掉這方面的問題,模型也能正常訓練了。
References
- TRL – Transformer Reinforcement Learning – Hugging Face
- lvwerra/trl – Transformer Reinforcement Learning – GitHub
Read More
- [已解決][Python] 使用 Numpy 判斷時報錯:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
- [已解決] FutureWarning: Passing (type, 1) or ‘1type’ as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / ‘(1,)type’. _np_qint8 = np.dtype([(“qint8”, np.int8, 1)])