常見問題#
下面列出了一些使用者在使用 C++ API 的各個部分時遇到的常見問題。
C++ 擴充套件#
來自 PyTorch/ATen 的未定義符號錯誤#
問題:匯入擴充套件時收到一個 ImportError,聲稱 PyTorch 或 ATen 的某個 C++ 符號未定義。例如
>>> import extension
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /home/user/.pyenv/versions/3.7.1/lib/python3.7/site-packages/extension.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN2at19UndefinedTensorImpl10_singletonE
解決方法:解決方法是在匯入擴充套件之前 import torch。這將使你的擴充套件所依賴的 PyTorch 動態(共享)庫中的符號可用,從而在你匯入擴充套件時能夠解析它們。
我使用 at:: 中的函式建立了一個張量,但出現了錯誤#
問題:你使用例如 at::ones、at::randn 或 at:: 名稱空間中的任何其他張量工廠函式建立了一個張量,並遇到了錯誤。
解決方法:將工廠函式呼叫中的 at:: 替換為 torch::。你應該永遠不要使用 at:: 名稱空間中的工廠函式,因為它們會建立張量。相應的 torch:: 函式會建立變數,而你應該只在程式碼中處理變數。