当前位置:首页 » 《资源分享》 » 正文

MATLAB上丝滑地调用自己训练的pytorch神经网络模型

9 人参与  2024年11月12日 08:01  分类 : 《资源分享》  评论

点击全文阅读


MATLAB上丝滑地调用自己训练的pytorch神经网络模型

一、环境配置准备

在MATLAB上加载pytorch环境

在MATLAB中运行pytorch的虚拟环境,需要我们自己在MATLAB的命令行输入:

pyversion 'C:\\Users\\31105\\.conda\\...\\python.exe' 

中间的路径是虚拟环境的绝对路径。

如果忘记了虚拟环境在哪,要找这个路径,可以有两种方法
1, 在VScode里鼠标停在内核按键就会直接显示出来
2,在cmd中:

conda activate shi #(shi是虚拟环境名字)Pythonimport torchprint(torch.path)

然后顺着torch的路径往回找就能找到python.exe的路径了

使用pth文件将训练好的模型的参数保存

这个方法应该很好找,本文就不展开讲了

二、调用文件的准备

本文也是参考了这篇文章 MATLAB调用Pytorch神经网络模型进行预测 不过为了适配自己的项目,就一些细节做了调整。在模型方面,本文将展示基于MLP模型的调用文件的具体代码。

module.py文件的准备

创建一个module.py文件。这个文件所描述的是模型的框架,具体如下:

from torch import nnimport torch.nn.functional as fclass NeuralNetwork(nn.Module):    def __init__(self):        super().__init__()        self.linear_relu_stack = nn.Sequential(            nn.Linear(1401,800),            nn.ReLU(),            nn.Linear(800, 600),            nn.ReLU(),            nn.Linear(600, 400),        )        #self.initialize_weights()         #self.initialize_parameters()    def forward(self, x):        logits = self.linear_relu_stack(x)        return logits

model_pre.py文件的准备

创建一个model_pre.py文件,这个部分就是将训练好的模型的参数代入到模型框架中。这个加载函数的输入值:params_path就是保存好的pth的模型参数文件的路径。

import torchimport numpy as npfrom module import NeuralNetworkdef model_load(params_path):    model = NeuralNetwork()#定义模型    model.load_state_dict(torch.load(params_path, map_location=torch.device('cpu')))#加载模型参数    model.eval()#设置为测试模式    return model

pred.py文件的准备

创建一个文件专门用来预测,本文特意单独开的这个预测文件,这样子可以使每次的预测的时间开销小些。这个预测函数的输入值:model就是前文加载好的模型,data就是所需要预测的数据。

import torchimport numpy as np  def prediction(model, data):    data = torch.tensor(data, dtype=torch.float32)#转为tensor    with torch.no_grad():#不计算梯度,因为是预测阶段        pred = model(data)#预测    pred = pred.numpy()#转为numpy数组    return pred

三、MATLAB上的调用

首先将上述所有文件保存在MATLAB的工作文件夹中,然后在MATLAB上加载这三个文件,因为本文的内置函数需要多次调用,故用全局变量将加载和预测工作分开。
下面在MATLAB上编写如下代码。
加载代码:

global predi; global model;    MLP = py.importlib.import_module('module');%读取    py.importlib.reload(MLP);%加载    mode = py.importlib.import_module('model_pre');%读取    py.importlib.reload(mode);%加载    model = mode.model_load(pyargs('params_path', 'D:\\MATLAB2023\\bin\\...\\MLP_4000.pth'));    predi = py.importlib.import_module('pred');%读取    py.importlib.reload(predi);%加载

预测代码:

global predi;    global model;    f_pred = predi.prediction(pyargs('model',model,'data', data1));%预测    f_pred = double(f_pred);

在作者的项目中,该方法调用的速度较快,可以满足正常程序对于速度的需求。

至此,这个方法就已经完整说明了。

祝你顺利地完成上述操作,在MATLAB上丝滑地调用自己训练好的pytorch模型!


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/184870.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1