【发布时间】:2014-08-22 19:42:51
【问题描述】:
所以我有超过 3000 万个对象需要用作我的训练数据。我的问题很简单:当我通过迭代appending 进程创建我的训练数组时,在某个阈值处,列表变得太大并且 python 被杀死。有什么方法可以解决这个问题?几个小时以来,我一直在努力解决这个问题,但一直在做空!
创建训练数组的代码示例
training_array = []
for ...:
data = #load data from somewhere
data_array = [x for x in data] #some large array, 2-3 million objects
for item in data_array:
training_array.append(item.a + item.b)
一段时间后,"killed" 被打印到控制台,python 退出。我怎样才能避免这种情况?
更具体的问题措辞:
我正在尝试在一个非常大的数组上进行训练,但是在制作数组时,python 被杀死了。这个训练算法不能在数据块上训练,但需要一个完整的数组,这限制了我知道如何超越这个问题的唯一方法。是否有另一种方法可以在不使用我所有 RAM 的情况下创建此数组(如果这是实际问题)?
【问题讨论】:
-
有什么方法可以解决这个问题?。制作更小的数组。
-
但实际上人们在比我创建的数据集大得多的数据集上进行训练,因此必须有一种方法可以在这种大小的数组上进行训练或在某些方面将其分解,以便 python 可以支持它
-
这取决于您的硬件以及您使用哪种方法进行训练。解决此问题的一种方法是购买更多 RAM。或者你可以考虑使用某种online trainer。此外,根据型号,您也许可以利用sparse matrices。