我有一个经过预先训练的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
对其进行转换。
但是在我看来,这不是最佳方法,而且非常耗资源。
请给我建议,是否可以使用其他方法将模型输出转换为稀疏矩阵?
答案 0 :(得分:0)
batch_size
中是否没有predict()
参数?
如果我理解正确,那么n
代表样本数量正确吗?
假定系统ram足以容纳全部数据,但VRAM不能容纳全部数据。