| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 开源深度学习框架研究(1) -> 正文阅读 |
|
[人工智能]开源深度学习框架研究(1) |
MNN:MNN Kit:提供推理以及训练的API接口,用于算法应用集成和调用。 模型推理:1)解释器对应模型数据 2)session对应运行时配置信息;多个session对应一个解释器,即一个模型可以采用不同的配置进行推理执行; 3)输入tensor,需要指定输入tensor的format,比如caffe::nchw,tf::NHWC;如果与模型的输入不匹配,内部会进行转换; 4)输出tensor的format也需要指定,如果与模型的输出不一致,会进行准换; 模型训练:支持将其他框架的模型转化为MNN模型用于训练;也可以使用MNN 表达式API搭建模型; 支持蒸馏训练,训练中量化,以及自定义优化算法; 使用表达式API接口搭建模型的步骤: 1)初始化网络中算子参数;比如卷积的kernel大小、shape等信息; 2)实现onForward计算函数; 3)加载模型结构和模型初始化参数snapshot; 4)设置训练框架参数,创建SGD求解器,设置动量参数等; 5)创建数据集和DataLoader 6)开始训练:加载batchsize个样本,计算前向传播,计算损失函数,根据epoch和iteration更新学习率,计算后向传播; 对接后端对接HIAI NPU1)设置模型的输入: NPUBackend::setNetworkInput,创建data节点,默认的输入format为NCHW; 调用tensorShapeFormat将输入tensor转换成om模型输入的tensor; ? tensorShapeFormat对将MNN的shape转化为NCHW的shape,对于小于4为的输入进行补维操作; ? 2)模型在线编译,并使用模型管家进行load; NPUBackend::bulidIRModelAndLoad ? 3)模型推理 NPUBackend::process ? 输入和输出tensor的维度是从编译之后的模型中获取的;调用如下接口获取 mMgrClient->GetModelIOTensorDim(modelName, mInputDimension, mOutputDimension) 4)算子对接 将MNN算子IR转换到HIAI IR,所有的算子继承NPUCommonExecution,实现onResize接口; mOp:MNN的op ? 对接Reduce算子: 对axis进行转换: ?
对接unpack、softmax、concat等有axis的算子: 将MNN算子的Axis转为NCHW对应的axis: 对接transpose算子 区分1维、2维、3维、4维场景进行permutation参数的转换,将permutation补充到4维; ? 对接gatherV2算子 常量输入要转成HCHW进行对接 TNN:TNN网络的组织,类似Caffe的思想,分为NetStructure和NetResource,NetStructure定义了网络结构,包含每一层算子的信息LayerInfo; ? ? NetResource包含多个Layer的参数和权重数据,每个算子是一个Layer,数据存储在RawBuffer中; 算子Layer的定义: ? 模型解析: 在ncnn_model_interpreter.cc中,将TNN模型的每一层解析出来, 输入input_shape_map默认保存为NCHW,在后面convert中使用 ? 对接HIAI NPU1)NpuNetwork::Init
CreateGraphInputs:创建graph的输入data,默认是NCHW CreateConstOpFromResource:创建常量op ConvertLayers:调用每个算子的Convert,进行逐层转换;
输入数据和权重均采用采用NCHW进行对接 对接Reduce类、softmax算子: 没有对轴进行特殊转换; ? 对接concat、splitV算子: ? ? 对接gather算子: 没有对权重、axis进行转换; ? ?后面持续更新~~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 4:23:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |