LibTorch:tensor.index_select()

2023-05-16

LibTorch中的tensor.index_select()方法与PyTorch中的用法类似,作用都是在指定的tensor维度dim上按照index值索引向量。先看一下在LibTorch中的声明:

inline Tensor Tensor::index_select(int64_t dim, const Tensor & index)

主要是两个参数,一个是要选择的维度,对于二维tensor来说,0代表按行索引,1代表按列索引,参数index代表索引值,这个参数要重点注意一下!首先index它本身就是一个tensor!另外,还得是int64(kLong)类型的tensor!

下面举例说明:

如果我们要获取一个[shape为(3, 2)]的二维tensor的第列维度上(dim=1)的数据(index=0,即第0列)[shape为(3, 1)]并打印,如果像下面这样写:(from_blob的作用是将数组转化为tensor)

#include "iostream"
#include "torch/script.h"
using namespace torch::indexing;
int main()
{
    float a[3][2] = {1};
    at::Tensor b = at::from_blob(a, {3, 2}, at::kFloat).index_select(1, at::tensor(0));
    std::cout << b << std::endl;
    return 0;
}

如果就这么运行,那么bug就会出现了。。。哈哈哈,先看看bug说的啥吧:

terminate called after throwing an instance of 'c10::Error'
  what():  index_select(): Expected dtype int64 for index (index_select_out_cpu_ at ../aten/src/ATen/native/TensorAdvancedIndexing.cpp:387)

发现问题没?上面不是说了嘛,index它本身就是一个tensor!另外,还得是int64(kLong)类型的tensor!所以我们还要对at::tensor(0)做一下数据类型的转换,如下面这段代码就正常了:

#include "iostream"
#include "torch/script.h"
using namespace torch::indexing;
int main()
{
    float a[3][2] = {{1,2},{3,4},{5,6}};
    at::Tensor b = at::from_blob(a, {3, 2}, at::kFloat).index_select(1, at::tensor(0).toType(at::kLong));
    std::cout << b << std::endl;
    return 0;
}

/*****************运行结果*******************/
 1
 3
 5
[ CPUFloatType{3,1} ]

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LibTorch:tensor.index_select() 的相关文章

随机推荐

  • SpringCloud(九)GateWay服务网关

    文章目录 1 概述简介1 官网2 是什么3 能干嘛4 微服务架构中网关在哪里5 有Zuul了怎么有出来gateway 2 三大核心概念3 Gateway工作流程4 入门配置1 新建Module2 POM文件3 YML4 主启动类5 9527
  • SpringSecurity框架介绍

    文章目录 1 概要2 历史3 同款产品对比1 Spring Security2 Shiro 4 模块划分 1 概要 Spring 是非常流行和成功的 Java 应用开发框架 xff0c Spring Security 正是 Spring 家
  • SpringSecurity入门案例

    文章目录 1 入门案例演示1 创建一个Springboot项目2 引入相关依赖3 编写Controller进行测试4 运行项目 2 权限管理中的相关概念1 主体2 认证3 授权 3 SpringSecurity 基本原理4 UserDeta
  • SpringSecurity Web 权限方案

    文章目录 1 设置登录系统的账号 密码2 实现数据库认证来完成用户登录1 准备sql2 添加依赖3 编写实体类4 整合 MybatisPlus 制作 mapper5 编写登录实现类6 测试访问 3 自定义设置登录页面 xff0c 不需要认证
  • SpringSecurity 微服务对权限的整合

    文章目录 1 微服务认证与授权实现思路2 权限管理数据模型3 项目结构和功能说明3 核心业务1 代码结构图说明2 创建认证授权相关的工具类 xff08 1 xff09 DefaultPasswordEncoder xff1a 密码处理工具类
  • Idea配置热部署

    一 概念 热部署就是正在运行状态的应用 xff0c 修改了他的源码之后 xff0c 在不重新启动的情况下能够自动把增量内容编译并部署到服务器上 xff0c 使得修改立即生效 热部署为了解决的问题有两个 xff0c 一是在开发的时候 xff0
  • Vue CLI(脚手架)

    文章目录 一 Vue CLI21 Vue CLI使用前提 xff0c 需要安装NodeJS和Webpack2 Vue CLI的使用3 Vue CLI2详解4 Runtime Compiler和Runtime only的区别5 使用 npm
  • vue-router 详解

    文章目录 1 认识vue router2 安装和使用vue router3 路由的默认路径4 HTML5的History模式5 router link属性介绍6 路由代码跳转7 动态路由8 路由懒加载9 嵌套路由实现10 传递参数的方式11
  • LibTorch对tensor的索引/切片/掩码操作:对比PyTorch

    目录 一 通过索引获取值 二 通过索引设置值 三 掩码操作 在PyTorch C 43 43 API xff08 libtorch xff09 中对张量进行索引的方式与Python API的方式很相似 诸如None integer bool
  • 小米商城项目(springboot+thymeleaf)

    starsea mall 项目是一套电商系统 xff0c 包括 starsea mall 商城前台系统及商城后台系统 xff0c 基于 Spring Boot 2 X 及相关技术栈开发 前台商城系统包含首页登录 商品分类 新品上线 首页轮播
  • Idea解决SVN的代码冲突

    解决冲突 当B用户代码提交发生冲突后 xff0c 可以再次选择更新 xff1a 选择OK xff1a 弹窗如下 xff1a 如果选择Merge xff0c 则弹出版本差异的窗口 xff0c 让用户自行查看差异后再选择以哪个版本的修改为准 x
  • Axiso解决跨域访问

    首先请检查下你的 Vue 版本 xff0c Vue2 和 Vue3 跨域方式不同 xff1a vue V 2 X or 3 X 一 Vue2 版本 这里以访问 Ve2x 的一个公告API为例 xff0c 直接访问如下 xff1a span
  • SpringBoot集成Spring Security(1)——入门程序

    本篇文章环境 xff1a SpringBoot 2 0 43 Mybatis 43 Spring Security 5 0 注意 xff1a SpringSecurity 5 0 43 版本变动较多 xff0c 且不兼容之前版本 xff0c
  • Windows下MongoDB 3.x 的安装及配置

    一 登录Mongodb官网 https www mongodb com try download community 下载安装包 二 安装MongoDB 安装比较简单 xff0c 类似于QQ xff0c 微信等软件 xff0c 中间主要是选
  • 如何获取 OSS AccessKeyId、AccessKeySecret

    开通阿里云oss xff1a https www aliyun com 1 点击概览 AccessKey oss控制台官网链接 xff1a https oss console aliyun com overview 2 出现下图 xff0c
  • vscode怎么使用git

    1 clone代码库 在vscode中输入快捷键 Ctrl 43 Shift 43 P 打开vscode的命令框 xff0c 在框中输入 git clone 并回车 xff0c 然后在文本框中输入git代码库的地址 2 修改clone下来的
  • Json与Java对象相互转化

    出现问题的原因 xff1a 在做项目中 xff0c 我们使用Hutool工具的Http请求调用远程服务器的接口 xff0c 返回Json字符串 xff0c 现在要把Json字符串转化为对象进行存储 xff0c 传给前端vue 访问远程返回的
  • 微信小程序基础

    文章目录 一 微信小程序介绍1 为什么是微信 程序2 官 微信 程序体验 二 微信小程序准备工作1 注册账号2 登录小程序3 获取APPID4 开发工具 三 第 个微信 程序1 打开微信开发者 具2 新建 程序项 3 填写项 信息4 成功5
  • 微信小程序之动态添加、删除指定view和获取input值

    遇到的问题 xff1a 动态的添加指定的view内容 嗯 很简单 wx for就搞定 xff01 xff01 动态添加的内容中有input xff0c 最终获取值的时候 xff0c 要获取到所有input的值并且是一个数组 动态删除指定的已
  • LibTorch:tensor.index_select()

    LibTorch中的tensor index select 方法与PyTorch中的用法类似 xff0c 作用都是在指定的tensor维度dim上按照index值索引向量 先看一下在LibTorch中的声明 xff1a inline Ten