Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无需forloop将Keras模型输出转换为稀疏矩阵_Python_Tensorflow_Machine Learning_Keras - Fatal编程技术网

Python 无需forloop将Keras模型输出转换为稀疏矩阵

Python 无需forloop将Keras模型输出转换为稀疏矩阵,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我有一个预训练的keras模型,其输出维度为[n,4000](它对4000个类进行分类) 我需要对测试数据(300K观测值)进行预测 但当我调用methodmodel.predict(X_train)时,我得到了一个内存不足错误,因为我没有足够的RAM来存储形状为(300K,4000)的矩阵 因此,将模型输出转换为稀疏矩阵是合乎逻辑的 但是将预测方法包装成scipy函数sparse.csr_矩阵不起作用(sparse.csr_矩阵(model.predict(X_train))),因为它首先在R

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

我需要对测试数据(300K观测值)进行预测

但当我调用method
model.predict(X_train)
时,我得到了一个
内存不足错误
,因为我没有足够的RAM来存储形状为
(300K,4000)
的矩阵

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

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

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


请给我一些建议,有没有其他方法可以将模型输出转换为稀疏矩阵?

predict()中没有
batch\u size
参数

如果我得到正确的
n
表示样本数量,对吗


假设您的系统ram足以容纳整个数据,但VRAM却不能。

批量调用保存的模型是司空见惯的事——我可能会错,但忍不住觉得您试图解决的问题充其量不需要解决方案,充其量也无法解决。当然,即使您将模型更改为输出稀疏矩阵(或任何其他更节省内存的表示形式)它仍然需要倒数第二层的内存?我认为有内置的
Keras
Tensoflow
方法可以将模型输出转换为稀疏矩阵。当然-但所能实现的就是在最后添加一个新层,并使用内存高效的表示。在转换之前,预测仍然需要使用大型层的内存。我认为问题在于存储带有预测的大型
Numpy数组,而不是存储模型层的权重。