Torchvision based on C++
You can build torchvision-CAPI with python setup.py build.
After building, you'll find the Shared Object File in build/lib.linux-x86_64-*/extension.cpython-310-x86_64-linux-gnu.so. You can use ln -s to create a symbolic link to extension.so.
import torch
import extension
help(extension)01. Dependencies
# Please use the same version as torch.
tch = "0.14.0"
torch-sys = "0.14.0"If you want to write a Python extension in Rust, you need to add pyo3 and pyo3-tch.
Tips: PyTensor in pyo3-tch is not compatible with torch::Tensor in libtorch and this repository. If you want to use this repository, you need to use torch_sys::C_tensor.
02. Declare the function
You need to use extern "C" {} to declare the function.
#[link(name = "extension")]
extern "C" {
fn crop(
img: *const C_Tensor,
top: i64,
left: i64,
height: i64,
width: i64
) -> C_Tensor;
...
}
fn test() {
let img = torch::rand(3, 32, 32);
let img = crop(img.as_ptr(), 1, 1, 8, 8);
println!("img: {}", img);
}pytest test_py/test_all.py