Advertisement

mxnet src/imperative/./imperative_utils.h:72: Check failed: inputs[i]->ctx().dev_mask() == ctx.dev_m

阅读量:

mxnet 1.6版本中,在自定义OP(计算metric)的训练过程中出现错误提示:

复制代码
    src/imperative/./imperative_utils.h:72: Check failed: inputs[i]->ctx().dev_mask() == ctx.dev_mask() (1 vs. 2) : Operator broadcast_add require all inputs live on the same context. But the first argument is on gpu(0) while the 2-th argument is on cpu(0)
    
    

原因:类似于这个报错
在你自行定义的操作中,存在部分运算涉及两个mxnet的ndarray对象,但这两个对象所处的context并不一致。

解决:核心在于定位这些运算的具体位置,确认其调用的是哪两个ndarray,随后将其统一转换至相同的context中。

例如:诸如mx.nd.pick运算、加法运算等操作。修正后的相关代码片段如下:

复制代码
    # 都放到CPU算就没啥事了,这一点可以通过设置        os.environ['CUDA_VISIBLE_DEVICES'] = ''来进行验证,看CPU环境下运行程序会不会有问

全部评论 (0)

还没有任何评论哟~