You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by GitBox <gi...@apache.org> on 2018/08/24 04:48:50 UTC

[GitHub] MinZhaoLin edited a comment on issue #9920: Asynchronous Issue on CustomOP and mxnet.image.ImageDetIter

MinZhaoLin edited a comment on issue #9920: Asynchronous Issue on CustomOP and mxnet.image.ImageDetIter
URL: https://github.com/apache/incubator-mxnet/issues/9920#issuecomment-415649816
 
 
   @wkcn 
   我是一开始定义了自己的softmax层后,出现了这个issue的报错src/io/image_io.cc:186: Check failed: inputs[0].ctx().dev_mask() == Context::kCPU (2 vs. 1) Only supports cpu input,
   然后根据这个issue改了之后,就是修改Imge.py之后,在AccMetric里面就出现了src/ndarray/ndarray_function.cu:43: Check failed: to->type_flag == from.type_flag_ (0 vs. 3) Source and target must have the same data type when copying across devices.这个问题
   这个问题具体是在pred_label = pred_label.asnumpy().astype('int32').flatten()的时候出现的,然后当我尝试在这句话前面(某些地方,有些地方可以,有些地方也会报错)将pred_label直接print输出的时候,他是有时会正常运行不会报错,但是每次当pred_label调用到asnumpy()的时候就会报这个错
   `class GenderAccMetric(mx.metric.EvalMetric):
     def __init__(self):
       self.axis = 1
       super(GenderAccMetric, self).__init__(
           'acc', axis=self.axis,
           output_names=None, label_names=None)
       self.losses = []
       self.count = 0
   
     def update(self, _labels, preds):
       self.count+=1
       #print("in gender AccMetric\n")
       #print("label is {}\n".format(_labels[2])) 
       #print("preds is {}\n".format(preds[3]))  当输出label和preds时,有时会正常运行
       labels = [_labels[2]]
       _preds = [preds[3]] #use softmax output
       for label, pred_label in zip(labels, _preds):
           #print("pred_label before if is {}\n".format(pred_label)) 在这里输出也会报错
           pred_label = pred_label.as_in_context(label.context) 加上了这句话还是不行
           if pred_label.shape != label.shape:
               #pred_label = mx.ndarray.array(_pred_label, ctx=mx.current_context())其中一个AccMetric在这里进行转换就解决了问题,但剩下的两个不行
               pred_label = mx.ndarray.argmax(pred_label, axis=self.axis)
           pred_label = pred_label.asnumpy().astype('int32').flatten()
           label = label.asnumpy()
           if label.ndim==2:
             label = label[:,0]
           label = label.astype('int32').flatten()
           assert label.shape==pred_label.shape
           self.sum_metric += (pred_label.flat == label.flat).sum()
           self.num_inst += len(pred_label.flat)`
   
   所以总的来说,我感到非常奇怪和困扰,按照你说的方法改了还是不行,我感觉是只要是pred调用了asnumpy()就会报错
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services