我正在尝试使用Stephan Marslands的2D自组织映射(结合主成分分析)进行实验
import som as sm#put it into somdef som_algorithm(inputs,nIterations,x=0,y=0): print "运行自组织映射!" if x == 0 and y == 0: y = len(inputs[0]) x = len(inputs) print "x轴是 " + str(x) + " / y轴是 " + str(y) som = sm.som(x,y,inputs) som.somtrain(inputs, nIterations) print som.somfwd(inputs)som_algorithm(training, 100)
根据我的数据集在预处理后,产生了以下错误
运行自组织映射!x轴是 600 / y轴是 173Traceback (most recent call last): File "\source\bag_of_words.py", line 112, in <module>som_algorithm(training, 100) File "\source\bag_of_words.py", line 87, in som_algorithmsom = sm.som(x,y,inputs) File "\som\__init__.py", line 44, in __init__self.mapDist = zeros((self.x*self.y,self.x*self.y))MemoryError
目前我的Y
代表每个数组中的元素数量(包含在大维度中的小维度),我的X
代表包含小数组维度的大维度。是什么导致了这个内存错误?
回答:
代码试图创建一个形状为x*y乘以x*y的零数组。这将是10774440000个元素。数组中的每个值是8字节(双精度)。这超过了80GB。你只是内存不足了。