---
title: RepeatOperation
description: "| 硬件型号 | 是否支持 | 特殊说明 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0072.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0072.html
indexId: 28e3e980011a2afd2dfa03b9051183ccb8c880e676becfa613f167307b50e55864
---
# RepeatOperation

#### 产品支持情况

| 硬件型号 | 是否支持 | 特殊说明 |
| --- | --- | --- |
| Atlas 350 加速卡 | x | \- |
| Atlas A3 推理系列产品 / Atlas A3 训练系列产品 | √ | \- |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ | \- |
| Atlas 训练系列产品 | √ | \- |
| Atlas 推理系列产品 | √ | \- |
| Atlas 200I/500 A2 推理产品 | √ | 不支持输入输出tensor数据类型为bf16的场景。 |


#### 功能说明

将输入tensor的Shape，根据参数中multiples上的信息扩展指定倍数。


#### 定义

```
struct RepeatParam {
    SVector<int64_t> multiples;
    uint8_t rsv[8] = {0};
};
```


#### 参数列表

| 成员名称 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| multiples | SVector<int64\_t> | \- | 输入tensor每个维度上扩展的倍数，支持对输入tensor的广播。 支持在不超过两个维度上进行扩展。 multiples的元素个数应小于等于8，且大于或等于输入tensor的维度，每一个元素要求都大于0。 |
| rsv[8] | uint8\_t | {0} | 预留参数。 |


#### 输入

| 参数 | 维度 | 数据类型 | 格式 | 描述 |
| --- | --- | --- | --- | --- |
| x | [x\_dim\_0, x\_dim\_1, ..., x\_dim\_n] | float16/bf16 | ND | 输入tensor。 |


#### 输出

| 参数 | 维度 | 数据类型 | 格式 | 描述 |
| --- | --- | --- | --- | --- |
| y | [y\_dim\_0, y\_dim\_1, ..., y\_dim\_n] | float16/bf16 | ND | 输出tensor。和输入的数据类型一致。 |


#### 约束说明

- 输出y的维度数和multiples的元素个数一致，每个维度大小为输入x的维度数广播到与multiples的元素个数一致后和multiples对应维度的乘积。
- 输入tensor中shape大于1且需要扩展的维度数加输入tensor按照multiples广播后的维度数需要小于等于8。


#### 功能列表

- 当multiples的长度与输入tensor的维度相同时
输出tensor的每个维度大小为输入tensor的相应维度大小与参数multiples对应位置的乘积。
例如输入一个tensor的shape为[1, 2, 3]，参数multiples为{1, 2, 2}。此时的输出tensor的shape为[1, 4, 6]。

  - inTensor:

```
[[[1,2,3]
[4,5,6]]]
```


    通过repeat之后为

  - outTensor:

```
[[[1,2,3,1,2,3],
[4,5,6,4,5,6],
[1,2,3,1,2,3],
[4,5,6,4,5,6]]]
```


- 当multiples的长度大于输入tensor的维度时
输出tensor的每个维度大小为输入tensor维度广播到参数multiples长度后与其对应位置的乘积。
例如输入一个tensor的shape为[2, 3]，参数multiples为{1, 2, 2}。此时的输出tensor的shape为[1, 4, 6]。

  - inTensor:

```
[[1,2,3]
[4,5,6]]
```


    通过repeat之后为

  - outTensor:

```
[[[1,2,3,1,2,3],
[4,5,6,4,5,6],
[1,2,3,1,2,3],
[4,5,6,4,5,6]]]
```
