<p>I wrote my masters thesis about the topic:</p>

<blockquote>
  <p>Thoma, Martin. "<a href="https://arxiv.org/pdf/1707.09725.pdf" rel="nofollow noreferrer">Analysis and Optimization of Convolutional Neural Network Architectures</a>." arXiv preprint arXiv:1707.09725 (2017).</p>
</blockquote>

<p>Long story short: There are a couple of techniques for analysis (chapter 2.5) and algorithms that learn topoligies (chapter 3), but in practice it is mostly trial and error / gut feeling.</p>
Resources on finding good Neural Network architectures for real applications
<p>I have finished two neural network courses and done loads of reading on the subject. I am comfortable with Tensorflow and Keras and building advanced neural networks (multiple inputs, large data, special layers...). I also have a fairly deep understanding of the underlying mathematics.</p>

<p>My problem is that I know how to build neural networks but don't know the process by which an "expert" would create one for a specific application.</p>

<p>I can:</p>

<ul>
<li>Collect loads of data and clean it up.</li>
<li>Train the neural network.</li>
<li>Fine tune hyper parameters.</li>
<li>Export it for actual applications.</li>
</ul>

<p>What I am missing is how to come up with the layers in the neural network (how wide, what kind...). I know it is somewhat trial and error and looking at what has worked for others. But there must be a process that people can use to come up with architectures* that actually work very well. For example state of the art neural networks.</p>

<p>I am looking for a free resource that would help me understand this process of creating a very good architecture*.</p>

<p>*by architecture I mean the different layers that make up the network and their properties</p>