在没有forloop的情况下将Keras模型输出转换为稀疏矩阵

时间:2019-05-02 10:56:54

标签: python tensorflow machine-learning keras

我有一个经过预先训练的keras模型,其输出为[n, 4000]维度(对4000个类别进行分类)。

我需要对测试数据进行预测(30万次观察)。

但是当我调用方法model.predict(X_train)时,会得到一个run-out memory error,因为我没有足够的RAM来存储形状为(300K , 4000)的矩阵。

因此,将模型输出转换为稀疏矩阵是合乎逻辑的。

但是将predict method包装到scipy函数sparse.csr_matrix中不起作用(sparse.csr_matrix(model.predict(X_train))),因为它首先在RAM中分配用于预测的空间,然后才分配转换为稀疏矩阵。

我还可以对特定批次的测试数据进行预测,然后使用forloop对其进行转换。 但是在我看来,这不是最佳方法,而且非常耗资源。

请给我建议,是否可以使用其他方法将模型输出转换为稀疏矩阵?

1 个答案:

答案 0 :(得分:0)

batch_size中是否没有predict()参数?

如果我理解正确,那么n代表样本数量正确吗?

假定系统ram足以容纳全部数据,但VRAM不能容纳全部数据。