---
title: TransposeOperation
description: "| 硬件型号 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0084.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0084.html
indexId: 6b7e49f73f79080e9df150b4f2f2e1f209d9b30ada847f52b017d769c597107564
---
# TransposeOperation

#### 产品支持情况

| 硬件型号 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 推理系列产品 / Atlas A3 训练系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 训练系列产品 | x |
| Atlas 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | x |


#### 功能说明

改变输入Tensor的排列顺序，在多个维度上进行转置。

图1 TransposeOperation


#### 定义

```
struct TransposeParam {
    SVector<int32_t> perm;
    uint8_t rsv[8] = {0};
};
```


#### 参数列表

| 成员名称 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| perm | SVector<int32\_t> | \- | 指示输入维度的重排结果。 例如：输入tensor的shape是[a,b,c]，perm是[0,2,1]，表明交换第一维和第二维，输出tensor的shape是[a,c,b]。 perm需要保证输入正确，维度和输入x一致。 |
| rsv[8] | uint8\_t | {0} | 预留参数。 |


#### 输入

| 参数 | 维度 | 数据类型 | 格式 |
| --- | --- | --- | --- |
| x | [dim\_0, dim\_1, ..., dim\_n] | float16/bf16/int64/int8/int32 | ND |


#### 输出

| 参数 | 维度 | 数据类型 | 格式 |
| --- | --- | --- | --- |
| output | 维度由参数确定 | float16/bf16/int64/int8/int32 数据类型与x保持一致 | ND |


#### 约束说明

Atlas 200I/500 A2 推理产品 上仅支持float16数据类型。
