【Python】Windows 下使用 pyinstaller 对 keras(tensorflow) 模型预测的代码文件打包

本文介绍了如何在Windows上使用pyinstaller将基于Python 3.6、TensorFlow 1.4.0和Keras 2.0.8的模型预测代码打包成exe文件。过程包括安装pyinstaller、处理依赖版本冲突以及打包步骤。注意,打包成功的关键在于正确处理各Python包之间的版本匹配问题。打包完成后,dist目录下将生成可执行文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用到的几种主要的 python 包的版本(CPU)

python:3.6

1、pyinstaller:3.3.1(打包成 exe)
2、tensorflow:1.4.0(深度学习框架)
3、keras:2.0.8(模型时基于 keras 训练的)
4、opencv-python:4.1.0.25(主要用于图像数据的读取与存储)
5、numpy:1.15.0(主要用于图像数据的矩阵操作)
6、h5py:2.9.0(打包的时候提醒需要这个包)
……
注:很多时候打包不成功,或者打包成功,但运行 exe 不成功,原因在于各种 python 包之间的版本不匹配。可降低某些包的版本,具体问题还需具体分析!

一、安装 pyinstaller

# 激活 tensorflow
activate tensorflow

# pip 安装 pyinstaller
pip install pyinstaller==3.3.1

# 卸载 enum34,否则会报错。而且这个包已经没有什么用了。
# enum34 的存在很有可能会引发 spyder 不能 Tab 补全。
pip uninstall enum34

二、打包

1、找到需

### 如何使用 PythonPyInstallerTensorFlow 模型打包为可执行文件 要将基于 TensorFlow 的机器学习模型打包为 `.exe` 文件,可以通过以下方式实现: #### 1. 准备工作 确保开发环境已正确设置并安装所需依赖项。以下是推荐的软件版本组合[^1]: - **PyInstaller**: `3.3.1` - **TensorFlow**: `1.4.0` - **Keras**: `2.0.8` - **OpenCV-Python**: `4.1.0.25` - **NumPy**: `1.15.0` - **H5py**: `2.9.0` 这些版本经过测试能够较好地兼容彼此。 #### 2. 创建虚拟环境 为了减少不必要的依赖冲突,建议在一个干净的虚拟环境中完成打包过程。可以使用 Anaconda 或 Virtualenv 来创建虚拟环境[^3]。 ```bash # 使用 conda 创建虚拟环境 (假设激活名为 tensorflow) conda create -n tensorflow python=3.6 conda activate tensorflow # 安装必要的库 pip install tensorflow==1.4.0 keras==2.0.8 opencv-python==4.1.0.25 numpy==1.15.0 h5py==2.9.0 pyinstaller==3.3.1 ``` #### 3. 解决潜在问题 在某些情况下,可能会遇到 `_pywrap_tensorflow_internal.pyd` 缺失或其他依赖错误。解决方法如下[^2]: - 如果找不到 `_pywrap_tensorflow_internal.pyd` 文件,可以在运行一次文件夹模式生成后定位该文件路径。 - 添加额外的数据支持: ```bash pyinstaller -F your_script.py --add-data="C:/path/to/_pywrap_tensorflow_internal.pyd;tensorflow/python" ``` #### 4. 执行打包命令 通过 PyInstaller 命令将脚本打包为单个可执行文件。如果目标是一个 GUI 应用,则需加上 `-w` 参数以隐藏控制台窗口[^3]。 ```bash pyinstaller -F -w your_script.py ``` > 注意:对于 GPU 版本的 TensorFlow,可能无法在未配置 CUDA 环境的目标设备上正常运行。 #### 5. 验证生成的 EXE 文件 打包完成后,进入 `dist` 目录检查生成的 `.exe` 文件是否能正常启动。如果发现闪退现象,可能是由于缺少特定动态链接库或版本不匹配引起。 --- ### 示例代码片段 以下是一段简单的 Keras/TensorFlow 模型加载与预测逻辑示例: ```python import tensorflow as tf from tensorflow.keras.models import load_model import cv2 import numpy as np def predict_image(image_path): model = load_model('model.h5') # 加载预训练模型 img = cv2.imread(image_path) # 读取图片 img = cv2.resize(img, (224, 224)) # 调整尺寸至输入大小 img_array = np.expand_dims(img / 255., axis=0) # 归一化处理 prediction = model.predict(img_array)[0][0] return 'Cat' if prediction < 0.5 else 'Dog' if __name__ == '__main__': result = predict_image('test.jpg') print(f'The image is classified as {result}.') ``` 将其保存为 `predictor.py` 并按照前述步骤进行打包。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值