---
title: 构造函数
description: "用于构造指定的Tensor对象。TensorV2类用来描述一个Tensor对象的信息以及行为，包含：形状、数据格式、数据类型、步长、偏移以及tensor数据内容tensordata。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/maintenref/basicdataapi/atlasopapi_07_00737.html
sourcePath: /source/zh/canncommercial/900/maintenref/basicdataapi/atlasopapi_07_00737.html
indexId: 865fb153d7c36c9ab77c68d8fa2c1dfd0c2a75a4b3f95fbcc31afb0df09b708778
---
# 构造函数

#### 函数功能

用于构造指定的Tensor对象。TensorV2类用来描述一个Tensor对象的信息以及行为，包含：形状、数据格式、数据类型、步长、偏移以及tensor数据内容tensordata。


#### 函数原型

```
TensorV2()   //默认构造函数
TensorV2 (const StorageShape &storage_shape, const StorageFormat &storage_format, const TensorPlacement placement, const ge::DataType data_type, TensorAddress addr)
TensorV2(const StorageShape &storage_shape, const StorageFormat &storage_format, ge::DataType data_type)
TensorV2(const StorageShape &storage_shape, const StorageFormat &storage_format, const TensorPlacement placement, const ge::DataType data_type, TensorAddress addr, TensorAddrManager manager)
TensorV2(const StorageShape &storage_shape, const StorageFormat &storage_format, const TensorPlacement placement, const ge::DataType data_type, TensorAddress addr, TensorAddrManager manager, const Stride &stride, const int64_t offset)
```


#### 参数说明

| 参数 | 输入/输出 | 说明 |  |  |
| --- | --- | --- | --- | --- |
| storage\_shape | 输入 | 指定tensor的形状信息。StorageShape类型。 |  |  |
| storage\_format | 输入 | 指定tensor的数据格式信息。StorageFormat类型。 |  |  |
| placement | 输入 | 指定tensor的实际数据所存储的device位置。TensorPlacement类型。 |  |  |
| data\_type | 输入 | 指定tensor的datatype信息。ge::DataType类型。 |  |  |
| addr | 输入 | 指定tensor的实际数据所存储的内存地址。TensorAddress类型，定义如下： 1 using TensorAddress = void \*; | 1 | using TensorAddress = void \*; |
| 1 | using TensorAddress = void \*; |  |  |  |
| manager | 输入 | tensor data的管理函数，若manager为空，则认为addr就是tensor的数据地址，且此数据不需要被释放。 1 2 3 4 5 6 7 using TensorAddrManager = ge::graphStatus (\*)(TensorAddress addr, TensorOperateType operate\_type, void \*\*out); enum TensorOperateType { kGetTensorAddress, ///< 获取Tensor的地址 kFreeTensor, ///< 释放Tensor kPlusShareCount, ///< 共享Tensor kTensorOperateType }; | 1 2 3 4 5 6 7 | using TensorAddrManager = ge::graphStatus (\*)(TensorAddress addr, TensorOperateType operate\_type, void \*\*out); enum TensorOperateType { kGetTensorAddress, ///< 获取Tensor的地址 kFreeTensor, ///< 释放Tensor kPlusShareCount, ///< 共享Tensor kTensorOperateType }; |
| 1 2 3 4 5 6 7 | using TensorAddrManager = ge::graphStatus (\*)(TensorAddress addr, TensorOperateType operate\_type, void \*\*out); enum TensorOperateType { kGetTensorAddress, ///< 获取Tensor的地址 kFreeTensor, ///< 释放Tensor kPlusShareCount, ///< 共享Tensor kTensorOperateType }; |  |  |  |
| stride | 输入 | 指定tensor的步长信息。Stride类型。 |  |  |
| offset | 输入 | 指定tensor的偏移信息。int64\_t类型。 |  |  |


#### 返回值说明

返回一个初始化的Tensor对象。


#### 约束说明

Tensor中的成员（format、shape、stride、offset等）的值均需要显式设置，否则均为未定义值。

TensorV2类不支持入图场景。

TensorV2类型指针转换为Tensor类型指针后可调用Tensor的成员函数。

Tensor类型指针转换为TensorV2类型指针前需要通过GetVersion()获取版本号，只有kTensorV2才能进行转换。


#### 调用示例

```
TensorV2 tensor{{{8, 3, 224, 224}, {16, 3, 224, 224}},       // shape                
                {ge::FORMAT_ND, ge::FORMAT_FRACTAL_NZ, {}},  // format                              
                kFollowing,                                  // placement                
                ge::DT_FLOAT16,                              //dt                
                nullptr};
```
