libtorch中 tensot---> Variable

本文介绍了解决使用libtorch函数torch::index_select时出现的类型错误问题,即期望获得Variable类型却得到了CUDALongType类型的index。文中详细解释了Variable与Tensor的区别,并提供了一种将Tensor转换为Variable的方法。
部署运行你感兴趣的模型镜像

what(): Expected object of type Variable but found type CUDALongType for argument #2 ‘index’ (checked_cast_variable at …/…/torch/csrc/autograd/VariableTypeManual.cpp:38)

问题描述:在使用libtorch函数torch::index_select(detections_class_left,0, index)时,运行报错如上,而进入index_select的定义显示:static inline Tensor index_select(const Tensor & self, int64_t dim, const Tensor & index)

问题分析:
通过报错提示argument #2 ‘index’ 应该是 Variable类型,而我使用的就是 tensor(数据类型为CUDALongType),因此一直报错。

问题解决:
1.搞清楚Variable类型和 tensor的区别,在这里引用另一篇文章的解读:知乎的文章;

2.把tensor转成Variable,使用函数:torch::autograd::make_variable(left_index, false);// tensot—> Variable

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

`libtorch-cpu-win-x64` 是 **TorchSharp** 所依赖的 **LibTorch** 的 CPU 版本,用于在 Windows x64 平台上运行 TorchSharp 的原生代码。 --- ## ✅ `libtorch-cpu-win-x64` 安装包说明 ### 📦 包名: - **`TorchSharp.LibTorch-CPU-win-x64`** ### 📦 NuGet 地址: 你可以通过以下链接访问该 NuGet 包: 🔗 [https://www.nuget.org/packages/TorchSharp.LibTorch-CPU-win-x64](https://www.nuget.org/packages/TorchSharp.LibTorch-CPU-win-x64) --- ## ✅ 安装方法 ### 方法一:使用 NuGet 包管理器安装(推荐) 1. 打开 Visual Studio。 2. 右键你的项目 → 选择 **“管理 NuGet 包”**。 3. 在搜索框中输入:`TorchSharp.LibTorch-CPU-win-x64` 4. 找到对应版本(如 `2.2.1.1`)并点击 **安装**。 5. 安装完成后,`libtorch-cpu-win-x64.dll` 会被自动复制到输出目录。 --- ### 方法二:使用 .NET CLI 安装 在项目目录下运行以下命令: ```bash dotnet add package TorchSharp.LibTorch-CPU-win-x64 --version 2.2.1.1 ``` 你可以将 `2.2.1.1` 替换为你项目所需的版本。 --- ### 方法三:手动下载并引用 DLL(适用于自定义部署) 1. 访问 [NuGet 官网](https://www.nuget.org/packages/TorchSharp.LibTorch-CPU-win-x64) 2. 点击你所需的版本 → 点击 **“下载包”**(文件扩展名为 `.nupkg`) 3. 将 `.nupkg` 文件重命名为 `.zip`,解压后进入以下路径: ``` runtimes/win-x64/native/libtorch-cpu-win-x64.dll ``` 4. 将该 DLL 文件复制到你的项目输出目录(如 `bin\Debug\net6.0`),或通过代码设置加载路径: ```csharp Environment.SetEnvironmentVariable("TORCHSHARP_LIBTORCH_PATH", @"C:\Your\DLL\Path"); ``` --- ## ✅ 版本选择建议 | TorchSharp 版本 | 对应 LibTorch 安装包 | |------------------|------------------------| | v0.90.x | `TorchSharp.LibTorch-CPU-win-x64` v0.90.x | | v0.91.x | `TorchSharp.LibTorch-CPU-win-x64` v0.91.x | | v2.2.1.1 | `TorchSharp.LibTorch-CPU-win-x64` v2.2.1.1 | 确保安装的 LibTorch 包版本与 TorchSharp 主版本一致,避免兼容性问题。 --- ## ✅ 常见问题总结 | 问题 | 原因 | 解决方法 | |------|------|-----------| | 找不到 LibTorch 包 | 包名称或版本错误 | 检查拼写和 NuGet 源设置 | | DLL 未自动复制 | 构建操作未正确配置 | 手动复制或设置环境变量 | | 加载 DLL 失败 | 路径错误或依赖缺失 | 使用 `Dependency Walker` 检查依赖项 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值