【发布时间】:2020-06-28 22:14:23
【问题描述】:
我有一个 Python 脚本,它采用 ONNX 神经网络并将其转换为要训练的 keras (.h5) 模型,然后作为新训练的模型导出回 ONNX,以便稍后部署。问题是我需要从 python 脚本创建一个 python .exe 文件,因为目标是在 C Plus Plus 中部署深度学习模型。目前,Python 脚本很好地为 C Plus Plus 程序更改 onnx 程序以部署经过训练的模型,并使用以下命令使用 Pyinstaller 成功创建 .exe 文件:
pyinstaller --onefile Material_Classifier.py
但是,问题是当我在文件资源管理器中单击 .exe 文件时,控制台会呈现大约半分钟为空,然后停止工作。当我使用cmd时,它给出了以下错误:
Failed to decode wchar_t from UTF-8
MultiByteToWideChar: The data area passed to a system call is too small.
share\jupyter\lab\staging\node_modules\.cache\terser-webpack-plugin\content-v2\sha512\2e\ba\cfce62ec1f408830c0335f2b46219d58ee5b068473e7328690e542d2f92f2058865c600d845a2e404e282645529eb0322aa4429a84e189eb6b58c1b97c1a could not be extracted!
fopen: No such file or directory
我的第一个预感是我的输入 ONNX 文件夹与 .exe 文件不在同一个文件夹中,因为脚本需要它进行输入,但这并没有修复 .exe 文件。现在,我倾向于 PyInstaller 可能不喜欢我在脚本中使用的以下一些库:
import os
import onnx
import keras
import keras2onnx
from onnx2keras import onnx_to_keras
import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.layers import Input
from tensorflow.keras.models import Model
from tensorflow.python.keras.models import load_model
import cv2
from tqdm import tqdm
import pickle
我的第二个预感是,因为 我的程序需要一个外部文件并输出一个新文件,所以我需要在使用 Pyinstaller 创建一个 .exe 之前以某种方式指定它。 但我目前没有办法无论哪种方式都知道。
TLDR;我想知道如果我做错了其他事情,PyInstaller 是否在处理深度学习库时遇到问题,以及是否有任何替代方法可以从 python 脚本创建 .exe 文件以进行深度学习。谢谢!
【问题讨论】:
标签: python-3.x keras pyinstaller tensorflow2.0 onnx