В принципе, я получаю ошибку памяти в python при попытке выполнить алгебраическую операцию на матрице numpy. Переменная u
, является большой матрицей двойного (в неудачном случае ее матрица размером 288x288x156 удваивается. Я получаю эту ошибку только в этом огромном случае, но я могу сделать это на других больших матрицах, просто это не так). Здесь ошибка Python:Python/Numpy MemoryError
Traceback (most recent call last):
File "S:\3D_Simulation_Data\Patient SPM Segmentation\20 pc
t perim erosion flattop\SwSim.py", line 121, in __init__
self.mainSimLoop()
File "S:\3D_Simulation_Data\Patient SPM Segmentation\20 pc
t perim erosion flattop\SwSim.py", line 309, in mainSimLoop
u = solver.solve_cg(u,b,tensors,param,fdHold,resid) # Solve the left hand si
de of the equation Au=b with conjugate gradient method to approximate u
File "S:\3D_Simulation_Data\Patient SPM Segmentation\20 pc
t perim erosion flattop\conjugate_getb.py", line 47, in solv
e_cg
u = u + alpha*p
MemoryError
u = u + alpha*p
является строка кода, которая терпит неудачу.
alpha
всего лишь двойной, а u
и r
- это большие матрицы, описанные выше (оба одинакового размера).
Я не так много знаю об ошибках памяти, особенно в Python. Любое понимание/советы в решении этого было бы очень оценено!
Благодаря
Но мой компьютер имеет 24 ГБ оперативной памяти ... есть ли способ убедиться, что больше всего доступно из окон? Редактирование: версия используемого нами python 32-битная по какой-либо причине:/Edit2: К сожалению, разреженные матрицы не являются опцией, так как во всех элементах есть значения (уравнение теплоты как проблема). – tylerthemiler 2010-11-30 21:18:19
Спасибо, я очистил некоторые вещи от памяти, и теперь могу загрузить это. – tylerthemiler 2010-11-30 22:35:56
@tylerthemiler: Используйте неофициальные 64-битные сборки http://www.lfd.uci.edu/~gohlke/pythonlibs/ – endolith 2013-10-31 18:52:25