С к сожалению устаревшей numpy версией 1.8.2
я получаю следующее поведение:
У меня есть словарь с восемью разреженными матрицами CSR в качестве значений.
>>> tmp = [ (D[key][select,:].T.sum(0))[:,:,None] for key in D ];
До этого момента,нет проблем.Список содержит плотные двумерные матрицы с формами (1,len(select),1)
.len(select)
меньше 300. Потребление памяти составляет всего около 3% и доступно почти 7 ГБ свободной оперативной памяти.
>>> result = np.concatenate(tmp,axis=2);
В мгновение ока я получаю ошибку сегментации (' Speicherzugriffsfehler ') из терминала, на htop
не видно развития, что память будет заполнена или что-то еще.Кроме того, я думаю, что потребление не должно превышать примерно вдвое больше, чем раньше, и это практически ничего.Тем не менее, я могу повторять так часто, как хочу, это всегда дает мне SegFault.
Я хотел бы исключить, что это проблема моей реализации.
ОБНОВЛЕНИЕ: Похоже, что после незначительного обновления numpy до версии 1.10 проблема больше не возникает.Может быть, какая-то серьезная ошибка в 1.8.2, о которой никто не заботится, так как она полностью устарела ...