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

