【发布时间】:2021-09-13 10:11:36
【问题描述】:
我训练了神经网络(变压器架构)并使用以下方法保存了它:
model.save(directory + args.name, save_format="tf")
之后,我想用另一个脚本再次加载模型,通过让它进行迭代预测来测试它:
from keras.models import load_model
model = load_model(args.model)
for i in range(very_big_number):
out, _ = model(something, training=False)
但是,我注意到每次预测都会增加 RAM 使用量,但我不知道为什么。在某些时候程序停止,因为没有更多的可用内存。您还可以在以下屏幕截图中看到 RAM 消耗:
如果我使用相同的架构,但只使用model.load_weigts( ... ) 加载模型的权重,我没有问题。
我现在的问题是,为什么load_model 似乎会导致这个问题,我该如何解决这个问题?
我使用的是 tensorflow 2.5.0。
编辑:
由于我无法解决问题并且答案也无济于事,我只是使用load_weights 方法创建了一个新模型并像这样加载已保存模型的权重:
model = myModel()
saved_model = load_model(args.model)
model.load_weights(saved_model + "/variables/variables")
这样,RAM 的使用率保持不变。然而,在我看来,这是一个非最佳解决方案。
【问题讨论】:
-
您是每次都加载模型,必须预测,还是加载一次并根据数据序列进行预测?
-
我只加载模型一次
-
好的,我试着在下面回答你的问题:)
标签: python tensorflow tensorflow2.0