当前位置: 首页 > news >正文

CANN算子库Transpose API

Transpose

【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs

产品支持情况

  • Ascend 950PR/Ascend 950DT :不支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品 :支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品 :支持
  • Atlas 200I/500 A2 推理产品 :不支持
  • Atlas 推理系列产品 :支持
  • Atlas 训练系列产品 :支持

功能说明

该函数不改变tensor数据的值,而是对tensor进行转置操作。

通过Transpose算子,可以改变tensor在不同维度上的排列顺序,实现对tensor的维度重排。

具体的是将用户传入的输入tensor x的shape按指定维度的排列顺序perm进行转置并输出。

函数原型

  • 输入和输出为不同地址

    const aclTensor *Transpose(const aclTensor *x, const aclTensor *y, const aclTensor *perm, aclOpExecutor *executor)
  • 输入和输出同一地址

    const aclTensor *Transpose(const aclTensor *x, const aclIntArray *perm, aclOpExecutor *executor)

参数说明

参数输入/输出说明
x输入/输出原始输入tensor。输入tensor x需是连续内存数据。数据类型支持FLOAT16、FLOAT、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64、BOOL、BFLOAT16。数据格式支持ND。
y输出转置后输出tensor。数据类型和数据格式同x。
perm输入整型数组,代表输入tensor x的维度,支持aclIntArray*、aclTensor*类型。最多支持8维转置,取值需在[0, x的维度数量-1]范围内。数据类型支持INT32、INT64。数据格式支持ND。
executor输入op执行器,包含了算子计算流程。

说明:BFLOAT16仅适用于如下产品

  • Atlas A2 训练系列产品/Atlas A2 推理系列产品
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品

返回值说明

转置成功,返回转置后的tensor;转置失败,返回nullptr。

约束说明

  • 最多支持8维转置,即输入x和perm的dim至多为8。
  • 输入x和perm的dim维度需要一致。

调用示例

// 标准写法,创建OpExecutor,参数检查 auto uniqueExecutor = CREATE_EXECUTOR(); CHECK_RET(uniqueExecutor.get() != nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR); // 标准写法,将输入self转换成连续的tensor auto selfContiguous = l0op::Contiguous(self, uniqueExecutor.get()); CHECK_RET(selfContiguous != nullptr, ACLNN_ERR_INNER_NULLPTR); int64_t dims = selfContiguous->GetViewShape().GetDimNum(); int64_t valuePerm[dims] = {0, 2, 1, 3}; // 表示对原始4维的中间2维做转置,即交换1轴和2轴 auto perm = executor->AllocIntArray(valuePerm, dims); selfContiguous = l0op::Transpose(selfContiguous, perm, uniqueExecutor.get());

【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.gsyq.cn/news/1641840.html

相关文章:

  • CANN/ops-sparse稀疏算子测试工程师
  • 从论文到产品:Denoising Diffusion GANs在计算机视觉领域的7大应用场景
  • Si5351A时钟发生器与TM4C129微控制器的应用指南
  • Rain多语言任务开发终极指南:Python、C++、Rust任务编写与集成教程
  • CANN / cannbot-skills 代理文档
  • 计算机视觉实战:使用SageMaker Studio Lab训练图像分类模型的完整指南
  • activerecord-multi-tenant 终极指南:如何在 Rails 应用中轻松实现多租户架构
  • RESPX安全测试:使用模拟库进行API安全测试的实践方法
  • 天赐范式第94天:从断裂到新技术的“内燃机“——TDP-CP与DRR-R方法论边界规范
  • Subliminal:终极iOS集成测试框架完整指南
  • 换手机数据迁移太麻烦?这款iPhone、安卓和平板电脑互传工具,一键搞定不丢数据!
  • Opslane最佳实践:10个技巧提升AI并行开发效率
  • Riffusion音乐API对接实战:低成本高效生成AI音乐
  • pysimdjson实战:大数据JSON处理的5个技巧
  • CANN CLI前端评审决策
  • 5 分钟上手 Swift Protobuf:最新官方仓库使用教程
  • Perlite Mermaid集成教程:创建交互式图表与流程图
  • Project Restoration:终极Majora‘s Mask 3D修复补丁完全指南
  • Justice.js:革命性网页性能监控工具,让前端性能问题无所遁形
  • OpenEduCat ERP财务管理:教育机构费用管理的完整教程
  • Perlite插件系统解析:扩展功能的无限可能
  • Tilt Brush Toolkit开发指南:构建自定义3D绘画应用的完整路线图
  • 终极指南:如何无缝过渡到 apple/swift-protobuf 新仓库
  • Lunalytics部署指南:使用Docker快速搭建私有监控面板
  • 3分钟免费激活Windows和Office:KMS_VL_ALL_AIO智能激活工具完全指南
  • RESPX版本升级指南:如何平滑迁移到最新版本的完整教程
  • CANN MatmulPermute算子开发
  • 低成本高精度时钟合成方案:CS2200-CP与STM32F031K6实践
  • 如何快速开始Pillar Valley游戏开发:10个新手必学技巧
  • RetinexNet实战教程:5分钟完成低光图像增强,附代码示例