首页 > 解决方案 > 缓存模型时,MXNet 预测不起作用

问题描述

我在 MyModel 类中有一个 MXNet MultilayerPerceptron。我首先从文件中加载经过训练的权重。我正在使用 MLP 执行预测,如下所示:

class MyModel:
    ...
    def predict(self, X):
         data_iterator = mx.io.NDArrayIter(data=X, 
         batch_size=self.model.data_shapes[0].shape[0], shuffle=False)
         predictions_npa = self.model.predict(data_iterator ).asnumpy()

其中 X 是一个 numpy 数组 (1,777)

现在我第一次执行 MyModel.predict 这非常有效。然后我将 MyModel 实例存储在 functools.LRUCache 中,并尝试使用完全相同的输入第二次执行预测。

每次这样做时,我的 python 进程都会停止做任何事情,没有日志,没有操作,也没有退出。我只知道当我尝试在我的 PyCharm 调试器中检查 self.model.predict(data_iterator) 的结果时,我得到一个加载错误。

所以我对那里发生的事情有点困惑,如果有人有想法,那可能会有很大的帮助!

谢谢

标签: pythonnumpymxnetfunctools

解决方案


这可能是因为您必须重新创建data_iterator. data_iterator一旦完成并且 . next () 调用将引发错误。


推荐阅读