腌制文件存在但其中没有任何内容 OSError:SavedModel 文件不存在于:saved_model.pbtxt|saved_model.pb
Posted
技术标签:
【中文标题】腌制文件存在但其中没有任何内容 OSError:SavedModel 文件不存在于:saved_model.pbtxt|saved_model.pb【英文标题】:a pickled file exists but nothing in it OSError: SavedModel file does not exist at: saved_model.pbtxt|saved_model.pb腌制文件存在但其中没有任何内容 OSError:SavedModel 文件不存在于:saved_model.pbtxt|saved_model.pb 【发布时间】:2021-12-27 10:23:50 【问题描述】:我正在研究 ActionAI(https://github.com/smellslikeml/ActionAI),这是一个对人类行为进行分类的 Python 库。 我在运行最终脚本 iva.py 时遇到此错误。
...
if RUNSECONDARY:
import tensorflow as tf
secondary_model = tf.keras.models.load_model('models/classifier.sav')
window = 3
pose_vec_dim = 36
motion_dict = 0: 'lying', 1: 'sit', 2: 'stand', 3: 'walk'
...
2021-11-16 21:53:39.382516: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
Traceback (most recent call last):
File "iva.py", line 256, in <module>
secondary_model = tf.keras.models.load_model('models/classifier.sav')
File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/saving/save.py", line 149, in load_model
loader_impl.parse_saved_model(filepath)
File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/saved_model/loader_impl.py", line 83, in parse_saved_model
constants.SAVED_MODEL_FILENAME_PB))
OSError: SavedModel file does not exist at: models/classifier.sav/saved_model.pbtxt|saved_model.pb
在 models 目录中,classifier.sav 存在但为空且没有 pbtxt 或 pb .
这是 train.py
import pandas as pd
from sklearn.pipeline import Pipeline
from transformer import PoseExtractor
def actionModel(classifier):
pipeline = Pipeline([
('pose_extractor', PoseExtractor()),
('classifier', classifier)])
return pipeline
def trainModel(csv_path, pipeline):
df = pd.read_csv(csv_path)
X = df['image'].values
y = df['label']
pipeline = pipeline.fit(X, y)
return pipeline.get_params()['steps'][1][1]
if __name__ == '__main__':
import pickle
import argparse
import importlib
parser = argparse.ArgumentParser(description='Train pose classifier')
parser.add_argument('--config', type=str, default='conf',
help="name of config .py file inside config/ directory, default: 'conf'")
args = parser.parse_args()
config = importlib.import_module('config.' + args.config)
pipeline = actionModel(config.classifier())
model = trainModel(config.csv_path, pipeline)
# Dump the model to file
pickle.dump(model, open(config.classifier_model, 'wb'), protocol=2)
我认为 train.py 中的 pickle.dump(model, open(config.classifier_model, 'wb'), protocol=2)
无法正常工作。
我尝试将文件扩展名更改为 pkl、h5 和 pb,但没有成功。sudo apt install python3-h5py
这个命令也没有任何改变。
【问题讨论】:
请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:pickle.dump()
应该将open()
作为第二个参数,即:
import pickle
filename = 'your_pickle_filename.pkl'
pickle.dump(model, open(filename, 'wb'))
【讨论】:
感谢您的回答!open()
已经是第二个参数,我按照你说的做了,但结果是一样的。以上是关于腌制文件存在但其中没有任何内容 OSError:SavedModel 文件不存在于:saved_model.pbtxt|saved_model.pb的主要内容,如果未能解决你的问题,请参考以下文章
os.mkdir(path) 在目录不存在时返回 OSError
我应该为不存在的文件参数引发 ValueError 或 OSError 吗?
OSError:libmkl_intel_lp64.so.1:无法打开共享对象文件:没有这样的文件或目录
OSError:SavedModel 文件不存在于:C:\Users\Munib\New 文件夹/saved_model.pbtxt|saved_model.pb