腌制文件存在但其中没有任何内容 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 存在但为空且没有 pbtxtpb .

这是 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) 无法正常工作。 我尝试将文件扩展名更改为 pklh5pb,但没有成功。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:无法打开共享对象文件:没有这样的文件或目录

修改 .cpp 文件的内容

OSError:SavedModel 文件不存在于:C:\Users\Munib\New 文件夹/saved_model.pbtxt|saved_model.pb