首页 > 其他分享 >Eigen::Tensor实现permute方法

Eigen::Tensor实现permute方法

时间:2023-07-14 16:14:48浏览次数:45  
标签:tensor Eigen t1 permute TensorXf Tensor

需求

使用C++处理Eigen::Tensor希望交换指定维度的位置
注意是交换(改变内存顺序)而不是reshape

实现

torch.tensor中内置了permute方法实现快速交换
Eigen::Tensor中实现相同操作需要一点技巧
例如,将一个1x2x3的tensor排列为3x1x2
那么对应t1[0,1,1] == t2[1,0,1]则排列生效
代码如下:

#include <iostream>
#include <unsupported/Eigen/CXX11/Tensor>

template <size_t... dims>
using TensorXf = Eigen::TensorFixedSize<float, Eigen::Sizes<dims...>, Eigen::RowMajor>;

int main()
{
    TensorXf<1,2,3> t1;
    t1.setValues(
    {
        {
            {1, 2, 3},
            {4, 5, 6}
        }
    });
    // permute the tensor
    TensorXf<3,1,2> t2;
    Eigen::array<int, 3> view({2, 0, 1});
    t2 = t1.shuffle(view);

    std::cout << t1(0,1,1) << std::endl;
    std::cout << t2(1,0,1) << std::endl;
}
// output:
// 5
// 5

在线运行Compiler Explorer
注:以上TensorFixedSize模板仅为项目加速使用,非强制。

参考

Eigen-unsupported: Eigen Tensors

标签:tensor,Eigen,t1,permute,TensorXf,Tensor
From: https://www.cnblogs.com/azureology/p/17553967.html

相关文章

  • tensorboard 可视化模型结构图 探索
    1.实验"""testtensorboardbasicdemo"""fromkeras.layersimportDensefromkeras.modelsimportSequentialfromkeras.callbacksimportTensorBoardimportnumpyasnpmodel=Sequential()model.add(Dense(units=64,activat......
  • albumentations 的数据增强为什么是 先 Normalize, 再 ToTensorV2,而 pytorch 正好相反
    albumentations:T+=[A.Normalize(mean=mean,std=std),ToTensorV2()]#NormalizeandconverttoTensortorchvision:T.ToTensor(),T.Normalize(IMAGENET_MEAN,IMAGENET_STD),原因:A.Normalize已经包含了将8位图像(0-255)转换为(0-1)(将mean和stdx255,然后再......
  • 关于tensorflow2.x保存模型及加载模型的方法及对比
    以下方法都是个人实际中测试和使用的方法,tf2版本在2.3~2.7之间1、model.save()andmodel.load()保存模型:这个方法可以直接将训练后的权重和训练的参数保存下来,一般我个人使用的.h5为后缀把模型整个保存下来。步骤如下:(1)创建模型,像添加积木一样对模型添加需要的卷积,池化等操作......
  • Qt+opencv dnn模块调用tensorflow模型
    参考网址(1条消息)Qt+opencvdnn模块调用tensorflow模型_vsqt调用tensorflow_街道口扛把子的博客-CSDN博客代码地址:GitHub-Whu-wxy/Simple_Qt_opencv_dnn:UsingdeeplearningmodelwithopencvinQt修改运行后的代码如下:#include<QCoreApplication>#include<opencv2\o......
  • anconda配置tensorflow环境
    一、anconda的安装1.进入Anaconda官网并按照电脑配置选择合适的安装包Anaconda官网:https://www.anaconda.com/点击进入不同的三个版本,分别是windows,mac,linux根据自己的电脑配置下载对应的安装包点击next点击Iagree同意协议默认上面的选择,点击next安装位置可以......
  • TensorRT源码编译
    目录1.参考资料2.源码编译2.1.下载TensorRT2.2.TensorRTOSS编译2.2.1.clone指定分支2.2.2.环境依赖2.2.3.编译附1.安装指定版本的cudatoolkit2.安装指定版本的cudnn1.参考资料tensorrt编译https://zhuanlan.zhihu.com/p/346307138tensorrt相关指南https://zhuanlan.zhihu.c......
  • 【本周特惠课程】深度学习6大模型部署场景(Pytorch+NCNN+MNN+Tengine+TensorRT+微信小
    前言欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下:第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用。第2层:掌握CV算法最底层的能力,包括模型设计基础,图像分类,模型分析。第3层:掌握CV算法最核心的方向,包括图像分......
  • Permute 3 mac全能媒体格式转换器
    Permute3Mac版是一款全能的媒体格式转换工具,它能够将常见的媒体格式快速转换成多种音频格式,如:MP3、WAV、MP4、DAT、AAC等等。还能够将多种音频格式快速转换成AVI或WMV文件,如:MP4、AVI、WMV等,支持大多数视频平台,包括VCD、DVD。→→↓↓载Permute3mac 1、支持的格......
  • tensorflow—CPU版安装教程
    一、创建TensorFlow虚拟环境(这里还没有进行安装)检测目前创建了哪些环境:condainfo--envs 创建虚拟环境:condacreate--nametensorflow(可以自己命名) python=3.8创建虚拟环境如下图所示:  此时激活自己创建的虚拟环境即可:activate(环境名称)二、安装TensorFlow清华......
  • Tensorflow基础
    基础概念tensor:张量(数据)operation(op):专门运算的操作节点,所有操作都是一个opgrap:图,整个程序的结构Session:会话,运算程序的图Tensorflow属于计算密集型,大多是在cpu上进行计算。图图默认已经注册,一组表示tf.Operation计算单位的对象和tf.Tensor表示操作之间流动的数据单......