用pyinstaller打包pytorch环境下的深度学习模型,实现通过exe程序实现界面显示模型的分类效果

用pyinstaller打包pytorch环境下的深度学习模型,实现通过exe应用实现界面显示模型的分类效果

训练深度学习模型和界面显示,看我之前的博客,链接在下面:
通过残差网络实现CLFAR-10分类,并通过界面显示

环境

1.python3.7
2.pycharm
3.pytorch
4.window10
5.pyqt5、pyinstaller等用的各种库

pyinstaller的使用

1,用python的包安装管理pip自动安装pyinstaller

pip install pyinstaller

安装完成后python安装目录的Scripts文件夹里面会有pyinstaller.exe 文件,
如果Scripts加入环境变量,type “pyinstaller -v” into console 可以查看pyinstaller的版本。
2,转换文件
cd进入py文件所在的文件夹,
pyinstaller后面如果加上-F就是打包为一个exe文件(文件会比较大),如果不加就会有很多库文件;

例如>pyinstaller -F demo.py
加上-w就是打包为没有cmd窗口的exe,不加运行时就会出现cmd窗口。(加不加凭个人喜好)

声明版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://editor.csdn.net/md?not_checkout=1&articleId=110712640

打包过程

一般而言,打包深度学习模型,直接进入anaconda Prompt

下面以我的项目为例:
1》激活pytorch环境
activate pytorch
2》安装pyinstaller
pip install pyinstaller
3》进入需要打包的工程目录下
cd /d E:\CLFAR-10+PyQt5
4》打包命令
pyinstaller -F -w GUI.py -p predict.py -p resnet.py
5》最后生成dist和build两个文件夹
**其中可执行文件就在dist中,我打包的过程中遇到了各种坑,比如警告确少什么文件之类的,我就不一个一个列举,都能通过博客和百度解决了。但是最后发现GUI.exe只能在本机运行换台机器就会报错,花费我三天时间尝试了各种方法都还是不行。为什么换台电脑就不行了呢?
我把代码拆分,单独界面也可以移植打其他电脑,打印错误信息,因为本机完全能够正常运行,哪有错误信息,然后我一条一条查看安装信息,发现是Torch的动态库找不到,拆分代码打包也印证了这一判断,单独打包模型也不能够在其他机器运行,而且错误信息都和完全打包一样。我找到动态库的dll文件拷贝到exe的同级目录下,发现还是不行。
最后我在想是不是我安装的pytorch是GPU版本,而有的电脑没有GPU,或者GPU版本不一样,本机运行时EXE能找到对应的GPU,而其他机器则不行。因为anaconda中有太多用不到的库,因此我决定新建一个虚拟环境。过程如下:
**

解决本机运行而其他机器不能运行的问题

1.在pycharm中新建一个本地的虚拟环境,要记住创建的路径。我这里已经创建过了:
在这里插入图片描述
2.activate激活新创建的环境,看代码需要哪些库安装即可如:pip install pyinstaller
pip install numpy
pip install PyQt5等还有pytorchCPU版本最后
查看一下安装的库

在这里插入图片描述

想对比anaconda中库要少的多
所以打包后的程序也比之前少的多
最后重新打包即可。即可在其他机器上运行了。

想法

有时候出现问题,真的需要一步一步的拆分去分析,不要放弃,我也是在请教师兄师姐的过程中才分析出问题所在,最后突然地一个灵感就解决了。其实用-D打包可以将环境和程序分开,程序启动由两三分钟到几秒钟,打包的程序由一个多G到几十Mb。这个pyinstaller打包确实坑比较多,如果遇到问题可以评论区留言,最后如果我的这篇文章对你有所帮助的话请给我点个赞,让我的分享有所价值,前后花了快一个星期的时间相当的不容易。

对于使用PyInstaller打包PyTorch GPU代码的问题,有一些注意事项和解决办法。首先,确保你的环境中已经正确安装了PyTorch和CUDA,并且你的代码可以在GPU上正常运行。 一个常见的问题是PyInstaller无法正确处理PyTorch GPU相关的依赖项。为了解决这个问题,你可以尝试以下方法: 1. 使用PyInstaller的`--hidden-import`选项来显式地导入一些PyTorch GPU相关的模块。例如,你可以尝试导入`torch.cuda`、`torch.backends.cudnn`和`torch.backends.cuda`等模块。这样可以确保PyInstaller能够正确地处理这些依赖项。 2. 另一种方法是在打包之前,将PyTorch的GPU支持关闭,将代码切换到使用CPU进行推理。这样一来,PyInstaller就不会再涉及与GPU相关的问题。你可以在代码中添加一些逻辑,当检测到没有GPU时,切换到CPU推理模式。 3. 如果以上方法都无法解决问题,你还可以尝试使用其他的打包工具,比如PyOxidizer或Nuitka。这些工具可能对于打包PyTorch GPU代码更加友好。 总之,在打包PyTorch GPU代码时,需要注意PyInstaller对于GPU相关的依赖项的处理。通过显式导入相关模块、关闭GPU支持或尝试其他打包工具,你应该能够解决打包问题。记得在打包之前,进行充分的测试以确保代码在不同环境中的正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Pyinstaller打包Pytorch框架](https://blog.csdn.net/qq_42811827/article/details/124035548)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [windows pyinstaller打包pytorch程序到exe文件](https://blog.csdn.net/whunamikey/article/details/121286772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值