文档
注册

创建网络

在前面的讲述中主要对AscendIE的编程模型进行了分析,下面就以C++ API为例,是如何按照编程模型完成模型编译优化。

  1. 创建一个Builder工具类。

    调用CreateInferBuilder接口,创建一个Builder。

    Builder *builder = Builder::CreateInferBuilder("Ascend310P3");      // Ascend310P3为昇腾AI处理器类型,根据服务器设备类型配置
  2. 使用Builder创建一个空的Network。
    Network *network = builder->CreateNetwork();
  3. 向Network中添加输入。
    Dims inputShape({16, 3, 224, 224});
    Tensor *inputTensor = network->AddInput("input1", DataType::FLOAT, inputShape);
  4. 向Network中添加卷积层ConvolutionLayer。

    调用Network内置API,添加ConvolutionLayer。

    int32_t numOutputMap = 64;
    Dims kernelHW({7, 7});
    std::vector<float> weight_data(64 * 3 * 7 * 7);
    std::vector<float> bias_data(64);
    WeightsBuf weightBuf {DataType::FLOAT, weight_data.data(), weight_data.size()};
    WeightsBuf biasBuf {DataType::FLOAT, bias_data.data(), bias_data.size()};
    ConvolutionLayer *convLayer = network->AddConvolutionLayer(inputTensor, numOutputMap, kernelHW, weightBuf, biasBuf);
    Dims strides({ 1, 1 });
    Dims paddings({2, 2});
    convlayer->SetStrides(strides);
    convlayer->SetPaddings(paddings);
  5. 向Network中添加激活层ActivationLayer(ReLU类型)。
    ActivationLayer *reluLayer = network->AddActivationLayer(convLayer->GetOutput(0), ActivationKind::RELU);
  6. 指定Network的输出Tensor。
    network->SetAsOutput(reluLayer->GetOutput(0));
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词