---
title: 非连续的Tensor
description: "目前大部分算子API的输入Tensor支持“非连续的Tensor”，即一个Tensor可以通过(shape, strides, offset)表示。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgc/aclcppdevg_03_0156.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgc/aclcppdevg_03_0156.html
indexId: adba143e445702bfdba80149950e05b0b887f05d0043ca0714dc28c5e5752e53105
---
# 非连续的Tensor

目前大部分算子API的输入Tensor支持“非连续的Tensor”，即一个Tensor可以通过(shape, strides, offset)表示。

#### 示例1

例如现有一个shape=(6, 5)、strides=(10, 1)、offset=22的Tensor，其内存排布如下：

```
a
0,0
, a
0,1
, a
0,2
, a
0,3
, a
0,4
, a
0,5
, a
0,6
, a
0,7
, a
0,8
, a
0,9
a
1,0
, a
1,1
, a
1,2
, a
1,3
, a
1,4
, a
1,5
, a
1,6
, a
1,7
, a
1,8
, a
1,9
a
2,0
, a
2,1
,
a
2,2
, a
2,3
, a
2,4
, a
2,5
, a
2,6
, a
2,7
, a
2,8
, a
2,9
a
3,0
, a
3,1
,
a
3,2
, a
3,3
, a
3,4
, a
3,5
, a
3,6
, a
3,7
, a
3,8
, a
3,9
a
4,0
, a
4,1
,
a
4,2
, a
4,3
, a
4,4
, a
4,5
, a
4,6
, a
4,7
, a
4,8
, a
4,9
a
5,0
, a
5,1
,
a
5,2
, a
5,3
, a
5,4
, a
5,5
, a
5,6
, a
5,7
, a
5,8
, a
5,9
a
6,0
, a
6,1
,
a
6,2
, a
6,3
, a
6,4
, a
6,5
, a
6,6
, a
6,7
, a
6,8
, a
6,9
a
7,0
, a
7,1
,
a
7,2
, a
7,3
, a
7,4
, a
7,5
, a
7,6
, a
7,7
, a
7,8
, a
7,9
a
8,0
, a
8,1
, a
8,2
, a
8,3
, a
8,4
, a
8,5
, a
8,6
, a
8,7
, a
8,8
, a
8,9
a
9,0
, a
9,1
, a
9,2
, a
9,3
, a
9,4
, a
9,5
, a
9,6
, a
9,7
, a
9,8
, a
9,9
```

即该Tensor排布如上图的深色位置。这个完整的Tensor在内存排布上是不连续的，strides描述Tensor维度上相邻两个元素的间隔，如果在维度1上的stride为1， 该维度是连续的；如果在维度0上的stride为10，那么相邻的元素间隔10个元素，即非连续。offset表示这个Tensor的首元素相对addr的偏移。


#### 示例2

例如现有一个shape=(4, 3)、strides=(20, 2)、offset=22的Tensor，其内存排布如下：

```
a
0,0
, a
0,1
, a
0,2
, a
0,3
, a
0,4
, a
0,5
, a
0,6
, a
0,7
, a
0,8
, a
0,9
a
1,0
, a
1,1
, a
1,2
, a
1,3
, a
1,4
, a
1,5
, a
1,6
, a
1,7
, a
1,8
, a
1,9
a
2,0
, a
2,1
,
a
2,2
, a
2,3
,
a
2,4
, a
2,5
,
a
2,6
, a
2,7
, a
2,8
, a
2,9
a
3,0
, a
3,1
, a
3,2
, a
3,3
, a
3,4
, a
3,5
, a
3,6
, a
3,7
, a
3,8
, a
3,9
a
4,0
, a
4,1
,
a
4,2
, a
4,3
,
a
4,4
, a
4,5
,
a
4,6
, a
4,7
, a
4,8
, a
4,9
a
5,0
, a
5,1
, a
5,2
, a
5,3
, a
5,4
, a
5,5
, a
5,6
, a
5,7
, a
5,8
, a
5,9
a
6,0
, a
6,1
,
a
6,2
, a
6,3
,
a
6,4
, a
6,5
,
a
6,6
, a
6,7
, a
6,8
, a
6,9
a
7,0
, a
7,1
, a
7,2
, a
7,3
, a
7,4
, a
7,5
, a
7,6
, a
7,7
, a
7,8
, a
7,9
a
8,0
, a
8,1
,
a
8,2
, a
8,3
,
a
8,4
, a
8,5
,
a
8,6
, a
8,7
, a
8,8
, a
8,9
a
9,0
, a
9,1
, a
9,2
, a
9,3
, a
9,4
, a
9,5
, a
9,6
, a
9,7
, a
9,8
, a
9,9
```

即该Tensor排布如上图的深色位置。这个完整的Tensor在内存排布上是不连续的，strides描述Tensor维度上相邻两个元素的间隔，如果在维度1上的stride为2， 该维度上间隔1个元素；如果在维度0上的stride为20，那么相邻的元素间隔20个元素，即非连续。offset表示这个Tensor的首元素相对addr的偏移。
