2017-08-14 7 views
0

Ich habe einen Fehler beim Versuch, CNTK zu testen.CNTK Laufzeitfehler im Zusammenhang mit C.gather

Ich versuche, einen Parameter mit Input_Variable als Index zu zerlegen. Die Verwendung von C.gather für das Slicen verursacht einen Speicherfehler im Backprop-Prozess.

Fehler treten in allen cntk2-Umgebungen auf, z. B. CPU, GPU, Docker, lokale Installation.

Fehlernachricht und Aufrufhierarchie

RuntimeError: CUBLAS failure 11: CUBLAS_STATUS_MAPPING_ERROR ; GPU=0 ; hostname=.... ; expr=cublasGetMatrix((int) numRows, (int) numCols, sizeof(ElemType), Data(), (int) GetNumRows(), dst, (int) colStride)

[CALL STACK] Microsoft::MSR::CNTK::CudaTimer:: Stop - Microsoft::MSR::CNTK::Matrix:: CopySection - Microsoft::MSR::CNTK::Matrix:: AssignValuesOf - CNTK::NDArrayView:: CopyFrom - CNTK::NDArrayView::NDArrayView
- CNTK::TrainingParameterSchedule:: Serialize - CNTK::DictionaryValue:: Save - CNTK::Trainer:: SummarizeTrainingProgress - PyInit__cntk_py - PyCFunction_Call - PyEval_GetFuncDesc - PyEval_EvalFrameEx - PyEval_GetFuncDesc (x2) - PyEval_EvalFrameEx (x2)

-Code

x = input_val[:-2] 
p1 = input_val[-2] 
p2 = input_val[-1] 

activator = relu 

W1 = C.Parameter((slices,input_dim,hidden_layers_dim), init=C.glorot_normal(), name='W1') 
b1 = C.Parameter((slices,hidden_layers_dim), init=0, name='b1') 
W2 = C.Parameter((slices,hidden_layers_dim,hidden_layers_dim), init=C.glorot_normal(), name='W2') 
b2 = C.Parameter((slices,hidden_layers_dim), init=0, name='b2') 
W3 = C.Parameter((slices,hidden_layers_dim,output_dim), init=C.glorot_normal(), name='W3') 
b3 = C.Parameter((slices,output_dim), init=0, name='b3') 

W11 = C.gather(W1, p1) 
b11 = C.gather(b1, p1) 
W1x = C.reshape(W11, (input_dim,hidden_layers_dim)) 
b1x = C.reshape(b11, (hidden_layers_dim,)) 

W21 = C.gather(W2, p1) 
b21 = C.gather(b2, p1) 
W2x = C.reshape(W21, (hidden_layers_dim,hidden_layers_dim)) 
b2x = C.reshape(b21, (hidden_layers_dim,)) 

W31 = C.gather(W3, p1) 
b31 = C.gather(b3, p1) 
W3x = C.reshape(W31, (hidden_layers_dim,output_dim)) 
b3x = C.reshape(b31, (output_dim,)) 

x = activator(C.times(x, W1x) + b1x) 
x = activator(C.times(x, W2x) + b2x) 
x = C.times(x, W3x) + b3x 

Antwort

0

ich dies mit dem neuesten Master nicht wiedergeben kann. Dies ist sehr wahrscheinlich ein Fehler, der direkt nach der Veröffentlichung von CNTK 2.1 behoben wurde. Die nächste Version (2.2) wird um den 15. September 2017 herum sein. Wenn das Problem weiterhin besteht, nachdem Sie auf 2.2 aktualisiert haben, könnte das Öffnen eines github issue der richtige Weg sein, dies zu beheben.

+0

Es wird nicht im Master-Zweig reproduziert. Vielen Dank. – smiley

Verwandte Themen