自己动手写深度学习框架(pytorch转ncnn)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

pytorch本身是我们进行ai训练的一个框架,但是训练得到的model最终是要部署到嵌入式板子上面的。这中间就有两种办法,一种是pytorch直接生成onnx文件,然后用ncnn自带的onnx2ncnn将onnx转成我们想要的文件。另外一种方法,就是先生成pt文件,接着用pnnx工具把pt生成我们想要的ncnn文件。

1、pytorch-》onnx-》ncnn

这种方法比较简单,只是在onnx转ncnn这一步的时候常常会有告警提示。首先,我们先安装onnxscript库,用pytorch生成onnx文件,

复制代码
pip3.10.exe install onnxscript -i https://pypi.doubanio.com/simple

接着继续生成onnx文件,

复制代码
dummy_input = torch.randn(1, n_in)
torch.onnx.export(
    model,
    dummy_input,
    "my_model.onnx",
    export_params=True,
    opset_version=18,
    do_constant_folding=True,
    input_names=['input'],
    output_names=['output'],
    dynamic_axes={
        'input': {0: 'batch_size'},
        'output': {0: 'batch_size'}
    }
)

有了onnx文件,继续借助于ncnn开发包里面的onnx2ncnn可执行文件,就可以将onnx换成我们想要的的param文件了。命令行是这样的,

复制代码
onnx2ncnn my_module.onnx my_module.param my_module.bin

只不过,在转换的时候,大部分时候都会有告警,提醒大家转换的过程中可能有数据丢失,建议大家用pnnx转换。

2、pt-》pnnx转换

和之前的方法比较,这种方法需要先安装pnnx,用pip310安装即可。安装完了,pnnx可执行文件就安装在scripts目录下,

复制代码
pip3.10.exe install pnnx  -i https://pypi.doubanio.com/simple

接下来,就是准备pt文件,尽量按照这个模板来,

复制代码
import torch

model.eval() # generate pt, then use pnnx & pt to generate ncnn files
dummy_input = torch.randn(1, n_in)
mod = torch.jit.trace(model, x)
mod.save("my_model.pt")

执行这个模板之后,就可以用pnnx生成对应的param文件和bin文件了。

复制代码
C:\Python310\Scripts\pnnx.exe my_model.pt

3、ncnn需要的两个文件

ncnn要运行起来,最主要的,就是param文件和bin文件。其中param文件描述model,bin则是model里面的参数内容。这里看一下param文件里面是什么样的,

复制代码
7767517
5 5
Input                    in0                      0 1 in0
Gemm                     gemm_0                   1 1 in0 1 10=4 2=0 3=1 4=0 5=1 6=1 7=10 8=5 9=10
ReLU                     relu_2                   1 1 1 2
Gemm                     gemm_1                   1 1 2 3 10=4 2=0 3=1 4=0 5=1 6=1 7=10 8=1 9=5
Sigmoid                  sigmoid_3                1 1 3 out0

bin文件就是纯二进制,这里就不多做展示了。

相关推荐
梁辰兴8 分钟前
百亿美元赌注变数,AI军备竞赛迎来转折点?
人工智能·ai·大模型·openai·英伟达·梁辰兴·ai军备竞赛
PaperRed ai写作降重助手10 分钟前
智能写作ai论文生成软件推荐
人工智能·aigc·ai写作·智能降重·paperred
龙山云仓13 分钟前
No140:AI世间故事-对话康德——先验哲学与AI理性:范畴、道德律与自主性
大数据·人工智能·深度学习·机器学习·全文检索·lucene
IT·小灰灰37 分钟前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
新缸中之脑1 小时前
编码代理的未来
人工智能
Anarkh_Lee1 小时前
【小白也能实现智能问数智能体】使用开源的universal-db-mcp在coze中实现问数 AskDB智能体
数据库·人工智能·ai·开源·ai编程
John_ToDebug1 小时前
2026年展望:在技术涌现时代构筑确定性
人工智能·程序人生
AndyHeee2 小时前
【windows使用TensorFlow,GPU无法识别问题汇总,含TensorFlow完整安装过程】
人工智能·windows·tensorflow
jay神2 小时前
基于YOLOv8的木材表面缺陷检测系统
人工智能·深度学习·yolo·计算机视觉·毕业设计
交通上的硅基思维2 小时前
人工智能安全:风险、机制与治理框架研究
人工智能·安全·百度