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/11/30 14:14:10 UTC

[GitHub] devymex opened a new issue #13485: Found bug in caffe convert tool and solved

devymex opened a new issue #13485: Found bug in caffe convert tool and solved
URL: https://github.com/apache/incubator-mxnet/issues/13485
 
 
   With following prototxt, the "_parse_proto" function will return empty "output_name"
   
   ```
   With a prototxt:
   layer {
     name: "data"
     type: "Input"
     top: "data"
     input_param {
       shape {
         dim: 1
         dim: 3
         dim: 128
         dim: 128
       }
     }
   }
   layer {  
     name: "test"  
     type: "InnerProduct" 
     bottom: "data"  
     top: "output"  
     inner_product_param {   
       num_output: 128   
       weight_filler {
          type: "xavier"
       }    
       bias_filler {     
          type: "constant"
          value: 1
       }
     }
   }
   layer {
      name: "sigmoid"
      type: "Sigmoid"
      bottom: "output"
      top: "output"
   }
   
   ```
   
   It is because the last layer "sigmoid" has identical bottom and top, making the "_output_name['output']['count']" equals to 2:
   https://github.com/apache/incubator-mxnet/blob/9adf2148322547d36dd90045647122a4ea649661/tools/caffe_converter/convert_symbol.py#L152
   https://github.com/apache/incubator-mxnet/blob/9adf2148322547d36dd90045647122a4ea649661/tools/caffe_converter/convert_symbol.py#L157
   
   Then it failed to pass the condition in:
   https://github.com/apache/incubator-mxnet/blob/9adf2148322547d36dd90045647122a4ea649661/tools/caffe_converter/convert_symbol.py#L292
   
   Finally, I adding a condition before the two loops and the problem solved:
   ```
           if layer.bottom != layer.top:
               for k in range(len(layer.bottom)):
                   if layer.bottom[k] in _output_name:
                       _output_name[layer.bottom[k]]['count'] = _output_name[layer.bottom[k]]['count']+1
                   else:
                       _output_name[layer.bottom[k]] = {'count':0}
               for k in range(len(layer.top)):
                   if layer.top[k] in _output_name:
                       _output_name[layer.top[k]]['count'] = _output_name[layer.top[k]]['count']+1
                   else:
                       _output_name[layer.top[k]] = {'count':0, 'name':name}
   ```

----------------------------------------------------------------
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