# Tensorlistreserve — MindSpore Signal+ 使用手册 alpha 文档

# Tensorlistreserve

为张量列表（TensorList）预分配指定数量和形状的张量空间。该算子用于初始化TensorList结构，设置其内部张量的形状信息和TensorList本身的形状。

该算子不区分具体的数据类型，主要负责设置TensorList的元数据信息。

输入：

  - num_elements - TensorList中包含的张量数量（int类型）。

  - element_shape - 每个张量的形状数组（int*类型），表示TensorList中每个张量的维度信息。

  - shape_size - 每个张量的形状大小（int类型），即element_shape数组的长度。

  - tensor_list_c_element_shape_size - 输出参数，用于存储TensorList内部每个张量的形状大小（int*类型）。

  - tensor_list_c_element_shape - 输出参数，用于存储TensorList内部每个张量的形状（int*类型）。

  - tensor_c_shape_size - 输出参数，用于存储TensorList本身的形状大小（int*类型）。

  - tensor_c_shape - 输出参数，用于存储TensorList本身的形状（int*类型）。

输出：

  - tensor_list_c_element_shape_size - 被设置为shape_size的值。

  - tensor_list_c_element_shape - 被填充为element_shape的值。

  - tensor_c_shape_size - 被设置为1，表示TensorList本身是一个1维结构。

  - tensor_c_shape - 被设置为num_elements，表示TensorList包含num_elements个张量。

支持平台：

  `FT78NE` `MT7004`

备注

- 该算子不区分具体的数据类型，主要操作TensorList的元数据

- TensorList中的每个张量必须具有相同的形状（element_shape）

- 调用前需要确保tensor_list_c_element_shape和tensor_c_shape指向的内存空间足够大

函数定义：

void Tensorlistreserve(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size, int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape)

C调用示例：

     1#include <stdio.h>
     2#include <tensorlistreserve.h>
     3
     4int main(int argc, char* argv[]) {
     5    // 参数设置
     6    int num_elements = 3;  // TensorList包含3个张量
     7    int element_shape[] = {4, 5};  // 每个张量的形状为[4, 5]
     8    int shape_size = 2;  // element_shape数组长度为2
     9
    10    // 输出参数
    11    int tensor_list_c_element_shape_size;
    12    int tensor_list_c_element_shape[2];  // 空间大小应至少为shape_size
    13    int tensor_c_shape_size;
    14    int tensor_c_shape;
    15
    16    // 调用算子
    17    Tensorlistreserve(num_elements, element_shape, shape_size,
    18                                 &tensor_list_c_element_shape_size,
    19                                 tensor_list_c_element_shape,
    20                                 &tensor_c_shape_size,
    21                                 &tensor_c_shape);
    22    return 0;
    23}