C++¶
注意
如果您正在尋找 PyTorch C++ API 文件,請直接前往 這裡。
PyTorch 提供了多項功能來使用 C++,最好根據您的需求從中選擇。在較高的層級上,可以使用以下支援
TorchScript C++ API¶
TorchScript 允許將 Python 中定義的 PyTorch 模型序列化,然後在 C++ 中載入和執行,方法是透過編譯擷取模型程式碼或追蹤其執行。您可以在 在 C++ 中載入 TorchScript 模型教學課程 中瞭解更多資訊。這表示您可以盡可能在 Python 中定義模型,但隨後透過 TorchScript 匯出模型,以便在生產環境或嵌入式環境中執行非 Python 執行。TorchScript C++ API 用於與這些模型和 TorchScript 執行引擎互動,包括
- 載入從 Python 儲存的序列化 TorchScript 模型 
- 如果需要,進行簡單的模型修改(例如,拉出子模組) 
- 使用 C++ 張量 API 構建輸入和進行預處理 
使用 C++ 擴展程式擴展 PyTorch 和 TorchScript¶
TorchScript 可以透過自訂運算子和自訂類別使用使用者提供的程式碼進行擴充。向 TorchScript 註冊後,這些運算子和類別可以在從 Python 或 C++ 執行的 TorchScript 程式碼中呼叫,作為序列化 TorchScript 模型的一部分。使用自訂 C++ 運算子擴展 TorchScript 教學課程逐步介紹了 TorchScript 與 OpenCV 的介面。除了使用自訂運算子包裝函數呼叫之外,還可以透過類似 pybind11 的介面將 C++ 類別和結構繫結到 TorchScript 中,這在 使用自訂 C++ 類別擴展 TorchScript 教學課程中進行了解釋。
C++ 中的張量和 Autograd¶
PyTorch Python API 中的大多數張量和 autograd 操作在 C++ API 中也可用。這些包括
- torch::Tensor方法,例如- add/- reshape/- clone。有關可用方法的完整清單,請參閱:https://pytorch.com.tw/cppdocs/api/classat_1_1_tensor.html
- C++ 張量索引 API 的外觀和行為與 Python API 相同。有關其用法的詳細資訊,請參閱:https://pytorch.com.tw/cppdocs/notes/tensor_indexing.html 
- 張量 autograd API 和 - torch::autograd套件對於在 C++ 前端構建動態神經網路至關重要。有關更多詳細資訊,請參閱:https://pytorch.com.tw/tutorials/advanced/cpp_autograd.html
在 C++ 中編寫模型¶
“在 TorchScript 中編寫,在 C++ 中推論”工作流程要求在 TorchScript 中完成模型編寫。但是,在某些情況下,模型必須使用 C++ 編寫(例如,在不需要 Python 元件的工作流程中)。為了滿足此類用例,我們提供了完全使用 C++ 編寫和訓練神經網路模型的功能,並提供熟悉的元件,例如 torch::nn / torch::nn::functional / torch::optim,它們與 Python API 非常相似。
- 有關 PyTorch C++ 模型編寫和訓練 API 的概述,請參閱:https://pytorch.com.tw/cppdocs/frontend.html 
- 有關如何使用 API 的詳細教學課程,請參閱:https://pytorch.com.tw/tutorials/advanced/cpp_frontend.html 
- 有關 - torch::nn/- torch::nn::functional/- torch::optim等元件的文件,請參閱:https://pytorch.com.tw/cppdocs/api/library_root.html
C++ 的封裝¶
有關如何安裝和連結 libtorch(包含所有上述 C++ API 的函式庫)的指南,請參閱:https://pytorch.com.tw/cppdocs/installing.html。請注意,在 Linux 上,提供了兩種 libtorch 二進位檔案:一種使用 GCC pre-cxx11 ABI 編譯,另一種使用 GCC cxx11 ABI 編譯,您應該根據系統使用的 GCC ABI 進行選擇。