在python字典中有效地加载多个Keras模型

时间:2019-06-17 08:18:49

标签: python tensorflow keras

我大约训练了120个模型并将其存储在多个文件夹中。我正在尝试将这些模型加载到字典中,以便针对其用例做出特定的预测。

但是问题在于,由于字典变得太大,因此加载这些模型以及预测输出需要花费时间。

有没有比python字典更有效的方式来加载这些模型?我什至尝试将这120个模型加载到12个不同的词典中,但是加载和预测仍然要花费大量时间。

但是问题在于,由于字典变得太大,因此加载这些模型以及预测输出需要花费时间。

model = {}
for _ in tqdm(os.listdir("wts_deep")):
    try:
        int(_[0])
        list_of_models = os.listdir("wts_deep/"+_)
        a = np.array([float(___.split("-")[3].split(".hdf5")[0]) for ___ in list_of_models])
        __ = np.where(a == a.max())[-1][-1]
        model[_] = load_model("wts_deep/"+str(_)+"/"+str(list_of_models[__]))
    except:
        print(_)

模型本身的加载大约需要33分钟

2 个答案:

答案 0 :(得分:0)

字典太大绝对不是问题。由于字典是哈希图,因此加载模型的时间复杂度应为O(1)。问题在于keras加载了模型或其他地方。还请记住,_变量通常在您实际需要使用它存储的变量时不应该使用。

答案 1 :(得分:-1)

我建议仅保存模型权重,重新构建模型体系结构并加载权重。 我还认为速度缓慢不是由于字典的使用。我认为这与Keras和/或运行模型的后端有关。 如果您使用的是Tensorflow,则尝试使用相同的会话和图形加载模型时,可能会遇到一些问题。