提取模型权重进行计算推理

pytorch获取全部权重参数、每一层权重参数

自制深度学习推理框架-第七课-构建自己的计算图

一、提取pytorch模型权重

首先查看模型权重的各个层的大小分布情况:

E:\Anaconda3\envs\pytorch1_12\python.exe G:/project/PythonProject/FCRegression/get_parameter.py
l1.weight ; torch.Size([32, 24])
l1.bias ; torch.Size([32])
l3.weight ; torch.Size([32])
l3.bias ; torch.Size([32])
l4.weight ; torch.Size([64, 32])
l4.bias ; torch.Size([64])
l6.weight ; torch.Size([64])
l6.bias ; torch.Size([64])
l7.weight ; torch.Size([128, 64])
l7.bias ; torch.Size([128])
l9.weight ; torch.Size([128])
l9.bias ; torch.Size([128])
l10.weight ; torch.Size([64, 128])
l10.bias ; torch.Size([64])
l12.weight ; torch.Size([64])
l12.bias ; torch.Size([64])
l13.weight ; torch.Size([32, 64])
l13.bias ; torch.Size([32])
l15.weight ; torch.Size([32])
l15.bias ; torch.Size([32])
l16.weight ; torch.Size([1, 32])
l16.bias ; torch.Size([1])


Process finished with exit code 0

二、在C++中读取数据

libnpy : 如何在C++中载入numpy ndarray
https://github.com/llohse/libnpy
cnpy: 如何使用c++读写npy文件
cnpy 库使用笔记
https://github.com/rogersce/cnpy

加载时间对比:

使用libnpy加载:
把npy.hpp放在include里,编译:

g++ main.cpp -I/usr/include/eigen3 -I/home/whf/projects/eigen_test/include

测试结果the load time is : 6.5e-05s.

用cnpy加载:

g++ main.cpp -I/usr/include/eigen3 -L/usr/local/lib -lcnpy -lz

测试结果the load time is : 0.000507s.

可以看出,libnpy比cnpy快了大约一个数量级。

三、C++矩阵处理:

利用Eigen库:快速入门矩阵运算——开源库Eigen

Eigen入门系列 —— Eigen::Matrix数据的读写、访问、替换

C++学习笔记(14) Eigen库与数组互传

C++ Eigen库矩阵操作

还可以进一步利用MKL进行加速优化:【高性能计算】Cpp + Eigen + Intel MKL + 函数写成传引用

你可能感兴趣的:(c++)