title: Multiple category classification in Caffe
body: <p>I thought we might be able to compile a Caffeinated description of some methods of performing <em>multiple category classification</em>.</p>
  
  <p><strong>By multi category classification I mean:</strong> The input data containing representations of multiple model output categories and/or simply being classifiable under multiple model output categories.</p>
  
  <p>E.g. An image containing a cat &amp; dog would output (ideally) ~1 for both the cat &amp; dog prediction categories and ~0 for all others.</p>
  
  <ol>
  <li><p>Based on <a href="http://arxiv.org/pdf/1312.6082v4.pdf" rel="noreferrer">this paper</a>, <a href="https://github.com/BVLC/caffe/pull/523" rel="noreferrer">this stale and closed PR</a> and <a href="https://github.com/BVLC/caffe/issues/1698" rel="noreferrer">this open PR</a>, it seems caffe is perfectly capable of accepting labels. Is this correct?</p></li>
  <li><p>Would the construction of such a network require the use of multiple neuron (inner product -> relu -> inner product) and softmax layers as in <a href="http://arxiv.org/pdf/1312.6082v4.pdf" rel="noreferrer">page 13 of this paper</a>; or does Caffe's ip &amp; softmax presently support multiple label dimensions?</p></li>
  <li><p>When I'm passing my labels to the network which example would illustrate the correct approach (if not both)?:</p>
  
  <p><strong>E.g. Cat eating apple</strong> Note: Python syntax, but I use the c++ source.</p>
  
  <p>Column 0 - Class is in input;
  Column 1 - Class is not in input</p>
  
  <pre><code>[[1,0],  # Apple
   [0,1],  # Baseball
   [1,0],  # Cat
   [0,1]]  # Dog
  </code></pre>
  
  <p>or</p>
  
  <p>Column 0 - Class is in input</p>
  
  <pre><code>[[1],  # Apple
   [0],  # Baseball
   [1],  # Cat
   [0]]  # Dog
  </code></pre></li>
  </ol>
  
  <p><strong>If anything lacks clarity please let me know and I will generate pictorial examples of the questions I'm trying to ask.</strong></p>