<p>There are no hard, proven rules how to construct neural networks (or CNNs). This is an open problem.</p>

<blockquote>
  <p>why use the most examples these architectures: Conv 5x5 -> Pooling(2,max) -> Conv5x5</p>
</blockquote>

<p>This is not the case. Most architectures use 3x3 pooling, because subsequent pooling layers expand the perceptive field to arbitary sizes. Empirically, some researchers (e.g. <a href="https://arxiv.org/abs/1512.00567" rel="nofollow noreferrer">Rethinking the Inception Architecture for Computer Vision</a>) found that those work better.</p>

<blockquote>
  <p>how can I determine if the Network is too deep / too shallow</p>
</blockquote>

<ul>
<li>The inference is too slow -> the network is too deep</li>
<li>The accuracy is too low -> depth could help</li>
</ul>

<blockquote>
  <p>how can I determine if the kernel size is too big / too small?</p>
</blockquote>

<p>Just use 3x3 as default. See <a href="https://arxiv.org/abs/1512.00567" rel="nofollow noreferrer">Rethinking the Inception Architecture for Computer Vision</a> for the reason.</p>

<blockquote>
  <p>When do I chose <code>conv -&gt; conv -&gt; pooling</code> instead of <code>conv -&gt; pooling -&gt; conv</code>?</p>
</blockquote>

<p>I would rather write <code>conv -&gt; conv -&gt; pooling</code> instead of <code>conv -&gt; pooling</code>, hence the question is "how do I determine how many subsequent convolutional layers I should have. Again, this is an open problem. Most people choose 2 or 3 subsequent convolutional layer, but at the end it seems to boil down to "just try it". (Please let me know if there is a more engineering approach!)</p>

<blockquote>
  <p>What for an impact has the stride parameter?</p>
</blockquote>

<p>Stride reduces the size of the output feature map. Hence it reduces your memory footprint a lot (* 1/stride^2).</p>

<blockquote>
  <p>is there a way to check which features a Layer is detecting?</p>
</blockquote>

<p>Zeiler &amp; Fergus: <a href="https://arxiv.org/abs/1311.2901" rel="nofollow noreferrer">Visualizing and Understanding Convolutional Networks</a></p>
How determine architecture of a Convolution Neuronal Network
<p>How determine architecture of a Convolution Neuronal Network</p>

<p>I'm doing some research on deep learning in computer vision.</p>

<p>I read a lot about how neuronal networks , back propagation, stochastic gradient descent, overfitting, regularization and so on works.
There are 'hard' mathematical rules: that's easy to understand.</p>

<p>But, how do I know what for a architecture I need for my Convolution Neuronal Network?
For Exmaple: I want to classify these plants:
<a href="http://www.biohof-waldegg.ch/Bilder/Blacke%201%20(Individuell).JPG" rel="nofollow noreferrer">http://www.biohof-waldegg.ch/Bilder/Blacke%201%20(Individuell).JPG</a></p>

<p>I have studied examples with the mnist database (handwritten digit database)
- why use the most examples these architectures: Conv 5x5 -> Pooling(2,max) -> Conv5x5?
  I have plotted the weights of the first hidden layer, but the image filters looks not very
  familiar for me (nor like a high pass filter for edge detection, nor like a low pass filter)</p>

<ul>
<li>is it better to add more feature maps in a layer or to add more hidden layers?</li>
<li>how can I determine if the Network is too deep / too shallow </li>
<li>how can I determine if a layer has too much / too less feature maps?</li>
<li>how can I determine if the kernel size is too big / too small?</li>
<li>when i chose conv -> conv -> pooling instead of conv -> pooling -> conv?</li>
<li>what for an impact has the stride parameter? (I know what this parameter does, but not when and how i have to adjust these parameter?</li>
<li>is there a way to check <em>which</em> features a Layer is detecting? (e.g. edges / color / shapes)</li>
</ul>