python中torch可以成功引用但無法訪問屬性的解決辦法
運行程序時遇到了一個奇怪的報錯:
# ... 省略 ... AttributeError: module 'torch' has no attribute 'Tensor'
意思是模塊torch沒有Tensor屬性。這是比較奇怪的一件事,因為torch肯定是可以訪問Tensor。
后來在stackoverflow上找到了一個類似的錯誤,底下有人回復(fù)說這是因為python在執(zhí)行import torch時引入的并不是torch包,而是一個命名空間(對應(yīng)一個名為torch的文件夾)。
驗證
首先查看一下是不是torch的引用真的有問題:
$ python >>> import torch >>> torch.Tensor Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'torch' has no attribute 'Tensor' >>> torch.nn Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'torch' has no attribute 'nn'
引入torch沒有問題,但是不僅不能訪問Tensor,連nn也不能訪問。這說明我們的確引入了一個錯誤的torch。
>>> print(torch) <module 'torch' (namespace)> >>> print(torch.__path__) _NamespacePath(['.../python3.8/site-packages/torch'])
果然,這個torch不是我們期望的torch,而是一個命名空間,而且我們也可以定位到問題所在的路徑。
解決
沿著路徑找下去,的確有一個名為torch的目錄,其中包含很多東西,應(yīng)該是正常torch所需要的那些。但是其中沒有__init.py__
,不知道是什么原因?qū)е碌摹?/p>
位于模塊搜索路徑上的任何不存在 __init__.py 文件的目錄都將被視為命名空間。
(在搜索路徑的其他任何位置都沒有同名模塊或包)
所以,在torch目錄下創(chuàng)建一個__init__.py是不是就好啦?
我沒有選擇這樣做,因為我不確定torch目錄下的其他文件是不是完好的。我選擇刪除掉這個 torch目錄,然后pip重新安裝torch。最后問題成功解決。
當(dāng)然,也有可能你本身是有正確的torch包,只不過有了額外的名為torch的目錄導(dǎo)致這個問題。那你可以選擇將目錄改名來規(guī)避該問題。
結(jié)果
重新安裝torch后,再測試一下。這回對了,python清楚地知道這是一個package,而不是一個namespace。
>>> import torch >>> print(torch) <module 'torch' from '.../lib/python3.8/site-packages/torch/__init__.py'> >>> print(torch.__path__) ['.../lib/python3.8/site-packages/torch']
到此這篇關(guān)于python中torch可以成功引用但無法訪問屬性的解決辦法的文章就介紹到這了,更多相關(guān)python torch可以引用但無法訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytest使用@pytest.mark.parametrize()實現(xiàn)參數(shù)化的示例代碼
這篇文章主要介紹了pytest使用@pytest.mark.parametrize()實現(xiàn)參數(shù)化,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07Python +Selenium解決圖片驗證碼登錄或注冊問題(推薦)
這篇文章主要介紹了Python Selenium解決圖片驗證碼登錄或注冊問題,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02python3新特性函數(shù)注釋Function Annotations用法分析
這篇文章主要介紹了python3新特性函數(shù)注釋Function Annotations用法,結(jié)合實例形式分析了Python3函數(shù)注釋的定義方法與使用技巧,需要的朋友可以參考下2016-07-07如何解決MNIST數(shù)據(jù)集下載速度較慢并失敗的問題
這篇文章主要介紹了如何解決MNIST數(shù)據(jù)集下載速度較慢并失敗的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06探索Python數(shù)據(jù)可視化庫中Plotly Express的使用方法
在數(shù)據(jù)分析和可視化領(lǐng)域,數(shù)據(jù)的有效呈現(xiàn)是至關(guān)重要的,python作為一種強大的編程語言,提供了多種數(shù)據(jù)可視化工具和庫,本文將介紹Plotly Express的基本概念和使用方法,幫助讀者快速入門并掌握數(shù)據(jù)可視化的技巧2023-06-06三個Python常用的數(shù)據(jù)清洗處理方式總結(jié)
這篇文章主要為大家詳細(xì)介紹了python數(shù)據(jù)處理過程中三個主要的數(shù)據(jù)清洗說明,分別是缺失值/空格/重復(fù)值的數(shù)據(jù)清洗,感興趣的小伙伴可以了解一下2022-12-12