---
title: NodeDefBuilder类
description: "NodeDef是一个Protocol Buffer，用于框架UT/ST测试时，构造节点信息，包含了节点的名称、类型、输入和输出等信息。"
url: https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/others/tbeaicpudevg/atlascpuapi_10_0091.html
sourcePath: /source/zh/CANNCommunityEdition/920beta1/others/tbeaicpudevg/atlascpuapi_10_0091.html
indexId: 56ecd165d535bb8bd3a8f49983fc7367ae61b418308646045955a473ea4aa91385
---
# NodeDefBuilder类

NodeDef是一个Protocol Buffer，用于框架UT/ST测试时，构造节点信息，包含了节点的名称、类型、输入和输出等信息。

本类提供了NodeDef的构造接口，包含添加NodeDef的Input，Output，Attr。开发者不直接调用下列接口。


**表1 NodeDefBuilder类成员函数**

| 接口名 | 接口功能 |
| --- | --- |
| static std::shared\_ptr<NodeDef> CreateNodeDef(); | 创建算子NodeDef，返回NodeDef类型指针。 |
| NodeDefBuilder(NodeDef \*nodeDef, std::string name, std::string opName); | NodeDef的构造函数，通过入参nodeDef指针，name算子名称以及opName算子类型构造算子的NodeDef。返回NodeDefBuilder类型对象。 |
| NodeDefBuilder& Input(const InputOutputNode& input); | NodeDef添加input tensor。通过入参InputOutputNode中提供node的shape，type，format信息构造NodeDef信息。 |
| NodeDefBuilder& Output(const InputOutputNode& output); | NodeDef添加output tensor。通过入参InputOutputNode中提供提供node的shape、type、format信息构造NodeDef信息。 |
| NodeDefBuilder& Attr(std::string name, int32\_t value); | NodeDef添加属性，属性类型是int32。 |
| NodeDefBuilder& Attr(std::string name, int64\_t value); | NodeDef添加属性，属性类型是int64。 |
| NodeDefBuilder& Attr(std::string name, float value); | NodeDef添加属性，属性类型是float。 |
| NodeDefBuilder& Attr(std::string name, double value); | NodeDef添加属性，属性类型是double 。 |
| NodeDefBuilder& Attr(std::string name, bool value); | NodeDef添加属性，属性类型是bool。 |
| NodeDefBuilder& Attr(std::string name, aicpu::DataType value); | NodeDef添加属性，属性类型是aicpu::DataType。 |
| NodeDefBuilder& Attr(std::string name, const std::vector<bool> &value); | NodeDef添加属性，属性类型是std::vector<bool>。 |
| NodeDefBuilder& Attr(std::string name, const std::string &value); | NodeDef添加属性，属性类型是std::string。 |
| NodeDefBuilder& Attr(std::string name, const std::vector<std::string> &value); | NodeDef添加属性，属性类型是std::vector<std::string>。 |
| NodeDefBuilder& Attr(std::string name, const std::vector<int64\_t> &value); | NodeDef添加属性，属性类型是std::vector<int64\_t>。 |
| NodeDefBuilder& Attr(std::string name, const std::vector<float> &value); | NodeDef添加属性，属性类型是std::vector<float>。 |
| NodeDefBuilder& Attr(std::string name, const std::vector<aicpu::DataType> &value); | NodeDef添加属性，属性类型是std::vector<aicpu::DataType>。 |
| NodeDefBuilder& Attr(std::string name, const std::vector<int64\_t> &shape, std::string type); | NodeDef添加属性，属性类型是std::vector<int64\_t>，入参type需要设置为"shape"。 |
| NodeDefBuilder& Attr(std::string name, const std::vector<std::vector<int64\_t>> &shapeLists, std::string type); | NodeDef添加属性，属性类型是std::vector<std::vector<int64\_t>>，入参type需要设置为"shape\_list"。 |
| NodeDefBuilder& Attr(std::string name, aicpu::Tensor \*tensor); | NodeDef添加属性，属性类型是aicpu::Tensor。 |
| NodeDefBuilder& Attr(std::string name, std::vector<aicpu::Tensor \*> &tensors); | NodeDef添加属性，属性类型是std::vector<aicpu::Tensor \*>。 |
