Tôi đang cố gắng áp dụng SVD trên ma trận (3241 x 12596) sau khi xử lý văn bản (với mục tiêu cuối cùng là thực hiện Phân tích ngữ nghĩa tiềm ẩn) và tôi không thể hiểu tại sao điều này xảy ra với máy 64 bit của tôi có RAM 16 GB. Khoảnh khắc svd(self.A)
được gọi, nó ném một lỗi. Các lỗi chính xác được đưa ra dưới đây:Áp dụng SVD sẽ ném ngay một Lỗi Bộ nhớ?
Traceback (most recent call last):
File ".\SVD.py", line 985, in <module>
_svd.calc()
File ".\SVD.py", line 534, in calc
self.U, self.S, self.Vt = svd(self.A)
File "C:\Python26\lib\site-packages\scipy\linalg\decomp_svd.py", line 81, in svd
overwrite_a = overwrite_a)
MemoryError
Vì vậy, tôi đã cố gắng sử dụng
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
và lần này, nó ném các lỗi sau:
Traceback (most recent call last):
File ".\SVD.py", line 985, in <module>
_svd.calc()
File ".\SVD.py", line 534, in calc
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
File "C:\Python26\lib\site-packages\scipy\linalg\decomp_svd.py", line 71, in svd
return numpy.linalg.svd(a, full_matrices=0, compute_uv=compute_uv)
File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 1317, in svd
work = zeros((lwork,), t)
MemoryError
Đây có phải là nghĩa vụ phải được như vậy một lớn ma trận mà Numpy không thể xử lý và có một cái gì đó mà tôi có thể làm ở giai đoạn này mà không thay đổi phương pháp chính nó?
Bộ nhớ sử dụng bao nhiêu bộ nhớ tại thời điểm nó cố gắng tính toán SVD? Bạn đang chạy Python 32 bit hoặc 64 bit? –
@Ferdinand Beyer: Nó đang sử dụng 380 MB khi nó bị treo. Ah! :(Tôi đang sử dụng Python 32 bit. Tôi sẽ tiếp tục và cài đặt phiên bản 64 bit – Legend
@Ferdinand Beyer: Bạn là một vị cứu tinh thực sự! – Legend