首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CNTK: cuDNN故障7: CUDNN_STATUS_MAPPING_ERROR

CNTK: cuDNN故障7: CUDNN_STATUS_MAPPING_ERROR
EN

Stack Overflow用户
提问于 2017-03-02 21:16:24
回答 1查看 1.2K关注 0票数 0

我正在尝试创建一个简单的卷积,从一个224 * 244 *3图像到56 * 56 *3张量,我想要与另一个图像进行比较。

为此,我创建了一个复合阅读器

代码语言:javascript
复制
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])

并使用该阅读器a创建输入映射

代码语言:javascript
复制
input_map = {
    input_var: reader_train["features"],
    input_var_mask: reader_train["mask"]
}

cnn看起来是这样的

代码语言:javascript
复制
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

使用输入

代码语言:javascript
复制
input_var = cntk.ops.input_variable((3, 224, 224), np.float32)
input_var_mask = cntk.ops.input_variable((3, 56, 56), np.float32)

和误差函数

代码语言:javascript
复制
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)

当我训练它的时候,一切都很好,直到

代码语言:javascript
复制
 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 

我从哪里得到的

代码语言:javascript
复制
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)

可以帮助我告诉我错误的原因吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2017-04-11 09:04:34

根据遇到此问题的其他项目(例如,请参阅here),这可能表明cudnn库中存在错误。CNTK不使用纹理内存,因此最好将此问题报告给NVidia。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42556545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档