2017-12-29 5 views
-1

numpy로 행렬 인수 분해 알고리즘을 구현 중이며 오랫동안 내 코드가 실행되어 jupyter 커널이 다시 시작되는 것으로 나타났습니다. 나는 np.dot를 사용하는 1 줄의 코드에 오류를 현지화했다. 천천히 실행되는 코드 스 니펫은 다음과 같습니다.np.dot를 실행하는 데 매우 오랜 시간이 걸림

H = np.random.rand(n_features, 8) 
print(H_start.T.shape) #(8, 10285) 
print(t2t_matrix.shape) #(10285, 10285) 
S_nom = H_start.T.dot(t2t_matrix) # this line takes a long time 

아이디어가 있으십니까? 나는 (10285, 10285) 매트릭스가 그렇게 오래 걸릴 것이라고 생각하지 못했을까요?

+1

'H_start' 모양을 인쇄했지만 점에'H'를 사용했습니다. – wim

+0

"매우 긴 시간"이란 무엇입니까? – talonmies

+0

매우 긴 시간 = 1 시간 이상 지나면 jupyter 노트북이 손상됩니다. 아래의 내 대답을 참조하십시오. 실제로 다른 매트릭스 유형을 사용하여 내적 제품을 수행하고있었습니다. – orbital

답변

0

t2t_matrix는 'scipy.sparse.csc.csc_matrix'이고 H_start는 'numpy.ndarray'였습니다. t2t_matrix.toarray()를 사용하여 t2t_matrix를 변환해야했습니다. 전환이 없으면 주피터 노트북이 고장납니다.

+1

예, 'dense.dot (희소)'가 올바르게 작동하지 않습니다. 'sparse.dot (dense)'는'sparse * sparse'처럼 잘됩니다. 그러나 일반 밀도의 '도트 (dot)'는 드문 드문 한 것에서 빽빽한 것으로의 전환을 시도합니다. 'np.array (t2t_matrix)'와't2t_matrix.toarray()'를 비교하십시오. – hpaulj

관련 문제