如何访问 Tkinter exe 文件中的模型权重?
How to access model weights in Tkinter exe file?
我生成了一个 Tkinter GUI 并生成了一个复制模型权重的 exe 文件。
权重文件夹与 myTKcode.py 文件位于同一文件夹中。
我生成我的模型并加载权重如下:
import tensorflow as tf
model = MyModel()
model.load_weights("weights/MyModelWeights")
现在如果我使用pyinstaller生成一个exe文件如下:
pyinstaller --onefile --add-data weights;weights myTKcode.py
根据 myTKcode.exe
文件的大小,我可以说 myTKcode.exe
中添加了权重。但是当我 运行 myTKcode.exe
文件时,它没有找到 weights 文件夹。但是,如果我将 weights 文件夹复制粘贴到 myTKcode.exe
所在的 dist
文件夹中,它就可以工作。
我的问题是如何访问存储在 myTKcode.exe
中的权重?
之前问过类似的问题,找到了解决方案here。
简而言之,对于每个 folder/file,必须将绝对路径添加到独立的 exe 文件。
因为我有一个名为 weights 的文件夹;我只需将以下代码添加到我的代码中:
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
然后我加载了如下权重;
import tensorflow as tf
model = MyModel()
#model.load_weights("weights/MyModelWeights")
weightDir = resource_path("weights") # resource_path get the correct path for weights directory.
model.load_weights(weightDir+"/MyModelWeights")
然后简单地 运行 pyinstaller
如下:
pyinstaller --onefile --add-data weights;weights myTKcode.py
我生成了一个 Tkinter GUI 并生成了一个复制模型权重的 exe 文件。
权重文件夹与 myTKcode.py 文件位于同一文件夹中。
我生成我的模型并加载权重如下:
import tensorflow as tf
model = MyModel()
model.load_weights("weights/MyModelWeights")
现在如果我使用pyinstaller生成一个exe文件如下:
pyinstaller --onefile --add-data weights;weights myTKcode.py
根据 myTKcode.exe
文件的大小,我可以说 myTKcode.exe
中添加了权重。但是当我 运行 myTKcode.exe
文件时,它没有找到 weights 文件夹。但是,如果我将 weights 文件夹复制粘贴到 myTKcode.exe
所在的 dist
文件夹中,它就可以工作。
我的问题是如何访问存储在 myTKcode.exe
中的权重?
之前问过类似的问题,找到了解决方案here。
简而言之,对于每个 folder/file,必须将绝对路径添加到独立的 exe 文件。
因为我有一个名为 weights 的文件夹;我只需将以下代码添加到我的代码中:
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
然后我加载了如下权重;
import tensorflow as tf
model = MyModel()
#model.load_weights("weights/MyModelWeights")
weightDir = resource_path("weights") # resource_path get the correct path for weights directory.
model.load_weights(weightDir+"/MyModelWeights")
然后简单地 运行 pyinstaller
如下:
pyinstaller --onefile --add-data weights;weights myTKcode.py