首页 > 解决方案 > 顺序加载多个模型导致 Python 崩溃

问题描述

我正在尝试按顺序加载多个模型以进行一些验证测试,但使用K.clear_session()会导致 Python 在 Windows 上崩溃。

“Python 不工作/响应”Windows 错误。

如果我不使用K.clear_session()我会遇到内存错误,我假设图形继续堆叠,并且每个模型逐渐需要更长的时间来加载。

我正在尝试这里(下面)关于如何使用的建议K.clear_session(),但是 Python 一直在崩溃(我没有收到错误,只是崩溃了)

keras 的模型加载速度极慢

这是我的代码:

>>> print(keras.__version__)
2.2.4
>>> import tensorflow as tf
>>> tf.__version__
'1.8.0'
>>> 

Windows 7



config = tf.ConfigProto()

# Don't pre-allocate memory; allocate as-needed
config.gpu_options.allow_growth = True

# Only allow a total of half the GPU memory to be allocated
config.gpu_options.per_process_gpu_memory_fraction = 0.8

# Create a session with the above options specified.
k.tensorflow_backend.set_session(tf.Session(config=config))



def evaluate_models_2(models_path_dir,):

    models_paths = [os.path.join(models_path_dir, model) for model in os.listdir(models_path_dir) if model.endswith(".hdf5")]
    models_pairs = get_model_key(models_paths, model_keys, MODEL_KEY)
    valid_gen = double_valid_generator()
    #global model_paths
    for num,model_pair in enumerate(models_pairs):
        model_path,model_key = model_pair
        print(num, ": ", model_path)
        evaluate_validation_data_2(model_path, model_key, generator = valid_gen)


def evaluate_validation_data_2(model_path,model_key, generator = None, show_mistakes = False):

    if generator == None:
        valid_gen = double_valid_generator()
    else:
        valid_gen = generator
    #load data generator
    print("about to load model")
    model = load_model_max_layer(model_path)
    #evaluate and then clear session
    print(model.evaluate_generator(valid_gen, steps =10))
    k.clear_session()

我似乎没有运行其他 Python 会话。

如果我删除 K.clear_session(),python 不会崩溃 但是,如前所述,加载模型的时间越来越长,并且我有大约 200 个模型要通过。

标签: pythonwindowstensorflowkeras

解决方案


推荐阅读