Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Variables Scikit学习-当变量的内容变得太大而无法存储在内存中时会发生什么?_Variables_Memory_Memory Management_Scikit Learn - Fatal编程技术网

Variables Scikit学习-当变量的内容变得太大而无法存储在内存中时会发生什么?

Variables Scikit学习-当变量的内容变得太大而无法存储在内存中时会发生什么?,variables,memory,memory-management,scikit-learn,Variables,Memory,Memory Management,Scikit Learn,在机器学习中,处理大数据是非常常见的。据我所知,变量在使用时会加载到主存中,因为CPU可以直接访问主存。我想这个问题不一定要针对Scikit learn,但这只是给出一个具体的例子。我正在使用列表处理文本数据,这些数据表示为一袋单词。我知道您可以使用Scipy来提高存储单词包的效率。但我很好奇当变量变得太大而无法存储在内存中时会发生什么 从程序员的角度来看,假设所有的事情都会像往常一样工作,我们可以认为变量“虚拟地”存储在内存中,这可以吗?(实际上,这里意味着变量的一部分存储在磁盘和主存上,但我

在机器学习中,处理大数据是非常常见的。据我所知,变量在使用时会加载到主存中,因为CPU可以直接访问主存。我想这个问题不一定要针对Scikit learn,但这只是给出一个具体的例子。我正在使用列表处理文本数据,这些数据表示为一袋单词。我知道您可以使用Scipy来提高存储单词包的效率。但我很好奇当变量变得太大而无法存储在内存中时会发生什么


从程序员的角度来看,假设所有的事情都会像往常一样工作,我们可以认为变量“虚拟地”存储在内存中,这可以吗?(实际上,这里意味着变量的一部分存储在磁盘和主存上,但我们可以将其视为一个黑匣子,让操作系统处理从磁盘到主存的切换,反之亦然。)

Spark and co.可能在不同的假设下工作。使用sklearn,核心假设是:您有足够的内存,因此如果没有,操作系统会尝试使用它(有时会失败)。当然,您可以实现此功能,获取部分数据、工作、重复您自己(在sklearn中,例如,所有与部分拟合兼容的算法),并且它可能工作得很好。但这一次:它是由问题驱动的手动内存管理。预期失败,当操作系统需要为您执行此操作时(因为操作系统不知道您的算法=访问模式)。@sascha+1“预期失败,当操作系统需要为您执行此操作时。”完全正确。换句话说,确保您有足够的内存,或者更改工具和进程。在对象的计算大小超过可用内存大小的情况下,python本身将导致
内存错误。当我尝试创建巨大的空数组时,我在numpy中体验到了这一点。@Dschoni我认为它比这更复杂。虽然我多次观察到这种行为,但我在基于numpy和sklearn的代码(无内存错误)中也有更多的垃圾处理经验。可悲的是,我无法给出任何规则,在这种情况下(除了简单的情况,比如分配一个巨大的np数组,比如
np.ones(范围(100))
)。