2017-03-02 76 views
0

我想要創建從224 * 244 * 3圖像的簡單卷積下降到56 * 56 * 3張,我想比較到另一個圖像。CNTK:cuDNN故障7:CUDNN_STATUS_MAPPING_ERROR

爲此目的我創建複合讀者

scale = ImageDeserializer.scale(width=224, 
           height=224, 
           channels=3, 
           scale_mode="pad", 
           pad_value=114, 
           interpolations='linear') 
scale2 = ImageDeserializer.scale(width=56, 
           height=56, 
           channels=3, 
           scale_mode="pad", 
           pad_value=114, 
           interpolations='linear') 
image_source = ImageDeserializer(os.path.join(path, "images_map.txt")) 
image_source.ignore_labels() 
image_source.map_features('features', [scale]) 

mask_source = ImageDeserializer(os.path.join(path, "images_mask_map.txt")) 
mask_source.ignore_labels() 
mask_source.map_features('mask', [scale2]) 

return MinibatchSource([image_source, mask_source]) 

,並與讀取器的創建一個輸入地圖

input_map = { 
    input_var: reader_train["features"], 
    input_var_mask: reader_train["mask"] 
} 

CNN新聞看起來像這樣

conv1 = cntk.layers.Convolution((5, 5), filterdims[0], pad=True, activation=cntk.ops.relu)(input_var) 
maxpool1 = cntk.layers.MaxPooling((2, 2), (2, 2))(conv1) 
conv2 = cntk.layers.Convolution((4, 4), filterdims[1], pad=True, activation=cntk.ops.relu)(maxpool1) 
maxpool2 = cntk.layers.MaxPooling((2, 2), (2, 2))(conv2) 
conv3 = cntk.layers.Convolution((4, 4), 3, pad=True, activation=cntk.ops.relu)(maxpool2) 
return conv3 # shape is (3, 56, 56) conv3 = z in the error equation 

具有輸入

input_var = cntk.ops.input_variable((3, 224, 224), np.float32) 
input_var_mask = cntk.ops.input_variable((3, 56, 56), np.float32) 

和誤差函數

f2 = cntk.ops.element_times(cntk.ops.constant(0.00390625), input_var_mask, name="f2") 
err = cntk.ops.reshape(cntk.ops.minus(z, f2), (56 * 56 * 3)) 
sq_err = cntk.ops.element_times(err, err) 
mse = cntk.ops.reduce_mean(sq_err) 
rmse_loss = cntk.ops.sqrt(mse) 
rmse_eval = cntk.ops.sqrt(mse) 

當我訓練訓練它的一切工作正常,直到

data = reader_train.next_minibatch(min(minibatch_size, epoch_size - sample_count), input_map=input_map) # fetch minibatch. 
trainer.train_minibatch(data) # Error as in title 

在那裏我得到

cuDNN failure 7: CUDNN_STATUS_MAPPING_ERROR ; GPU=0 ; hostname=STEPHENPC 
train_minibatch_overload_for_minibatchdata 

return _cntk_py.Trainer_train_minibatch_overload_for_minibatchdata(self, *args) 
RuntimeError: cuDNN failure 7: CUDNN_STATUS_MAPPING_ERROR ; GPU=0 ;  hostname=STEPHENPC ; expr=err 

cudaStreamDestroy failed (PrefetchGPUDataTransferer dtor): an illegal memory access was encountered (cuda error 77) 

能有些幫助我,告訴我錯誤的原因?

在此先感謝

+0

你使用(或有)多個GPU? –

回答

0

根據已運行到這個問題的其他項目(見例如here)這可能表明在cudnn庫中的缺陷。 CNTK不使用紋理內存,因此最好將此問題報告給NVidia。