<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Building neural architectures â€¢ ruta</title>
<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/lumen/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css">
<script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous">
<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet">
<script src="../pkgdown.js"></script><meta property="og:title" content="Building neural architectures">
<meta property="og:description" content="ruta">
<!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body data-spy="scroll" data-target="#toc">
    

    <div class="container template-article">
      <header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <span class="navbar-brand">
        <a class="navbar-link" href="../index.html">ruta</a>
        <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">1.2.0</span>
      </span>
    </div>

    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav">
<li>
  <a href="../">
    <span class="fa fa-home"></span>
     
    Home
  </a>
</li>
<li>
  <a href="../articles/examples/autoencoder_basic.html">
    <span class="fa fa-code"></span>
     
    Get started
  </a>
</li>
<li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
    Examples
     
    <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu">
<li>
      <a href="../articles/architectures.html">Building neural architectures</a>
    </li>
    <li class="divider">
    </li>
<li class="dropdown-header">Autoencoder variants</li>
    <li>
      <a href="../articles/examples/autoencoder_contractive.html">Contractive autoencoder</a>
    </li>
    <li>
      <a href="../articles/examples/autoencoder_denoising.html">Denoising autoencoder</a>
    </li>
    <li>
      <a href="../articles/examples/autoencoder_robust.html">Robust autoencoder</a>
    </li>
    <li>
      <a href="../articles/examples/autoencoder_sparse.html">Sparse autoencoder</a>
    </li>
    <li>
      <a href="../articles/examples/autoencoder_variational.html">Variational autoencoder</a>
    </li>
    <li>
      <a href="../articles/examples/autoencoder_convolutional.html">Convolutional autoencoder</a>
    </li>
  </ul>
</li>
<li>
  <a href="../articles/troubleshooting.html">
    <span class="fa fa-wrench"></span>
     
    Troubleshooting
  </a>
</li>
      </ul>
<ul class="nav navbar-nav navbar-right">
<li>
  <a href="../reference/">
    <span class="fa fa-book"></span>
     
    Documentation
  </a>
</li>
<li>
  <a href="https://github.com/fdavidcl/ruta" class="external-link">
    <span class="fa fa-github"></span>
     
  </a>
</li>
      </ul>
</div>
<!--/.nav-collapse -->
  </div>
<!--/.container -->
</div>
<!--/.navbar -->

      

      </header><div class="row">
  <div class="col-md-9 contents">
    <div class="page-header toc-ignore">
      <h1 data-toc-skip>Building neural architectures</h1>
            
      
      <small class="dont-index">Source: <a href="https://github.com/fdavidcl/ruta/blob/HEAD/vignettes/architectures.Rmd" class="external-link"><code>vignettes/architectures.Rmd</code></a></small>
      <div class="hidden name"><code>architectures.Rmd</code></div>

    </div>

    
    
<p>Ruta allows creating the neural architecture of autoencoders in
several ways. The easiest way is to use an integer vector describing the
number of units of each hidden layer in the encoder:</p>
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://github.com/fdavidcl/ruta" class="external-link">ruta</a></span><span class="op">)</span></span>
<span></span>
<span><span class="va">net</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1000</span>, <span class="fl">100</span><span class="op">)</span></span>
<span><span class="va">net</span> <span class="op">|&gt;</span> <span class="fu"><a href="../reference/as_network.html">as_network</a></span><span class="op">(</span><span class="op">)</span> <span class="op">|&gt;</span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="op">)</span></span>
<span><span class="co">#&gt; Network structure:</span></span>
<span><span class="co">#&gt;  input</span></span>
<span><span class="co">#&gt;  dense(1000 units) - linear</span></span>
<span><span class="co">#&gt;  dense(100 units) - linear</span></span>
<span><span class="co">#&gt;  dense(1000 units) - linear</span></span>
<span><span class="co">#&gt;  dense - linear</span></span></code></pre></div>
<p>The input and output layers have an undetermined size until training
data is used and the autoencoder is converted onto a Keras model.</p>
<p>By using <a href="https://ruta.software/reference/#section-neural-network-architecture">separate
functions</a> for each layer type, one may define the activations at the
output of each layer:</p>
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="va">net</span> <span class="op">&lt;-</span> </span>
<span>  <span class="fu"><a href="../reference/input.html">input</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span> </span>
<span>  <span class="fu"><a href="../reference/dense.html">dense</a></span><span class="op">(</span><span class="fl">1000</span>, <span class="st">"relu"</span><span class="op">)</span> <span class="op">+</span> </span>
<span>  <span class="fu"><a href="../reference/dense.html">dense</a></span><span class="op">(</span><span class="fl">100</span>, <span class="st">"tanh"</span><span class="op">)</span> <span class="op">+</span> </span>
<span>  <span class="fu"><a href="../reference/dense.html">dense</a></span><span class="op">(</span><span class="fl">1000</span>, <span class="st">"relu"</span><span class="op">)</span> <span class="op">+</span> </span>
<span>  <span class="fu"><a href="../reference/output.html">output</a></span><span class="op">(</span><span class="st">"sigmoid"</span><span class="op">)</span></span>
<span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">net</span><span class="op">)</span></span>
<span><span class="co">#&gt; Network structure:</span></span>
<span><span class="co">#&gt;  input</span></span>
<span><span class="co">#&gt;  dense(1000 units) - relu</span></span>
<span><span class="co">#&gt;  dense(100 units) - tanh</span></span>
<span><span class="co">#&gt;  dense(1000 units) - relu</span></span>
<span><span class="co">#&gt;  dense - sigmoid</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">net</span><span class="op">)</span></span></code></pre></div>
<p><img src="architectures_files/figure-html/structure-1.png" width="480"></p>
<p>Other available layers are <code>dropout</code> and other Keras
layers via the <code>layer_keras</code> function:</p>
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="va">act_reg</span> <span class="op">&lt;-</span> <span class="fu"><a href="../reference/layer_keras.html">layer_keras</a></span><span class="op">(</span><span class="st">"activity_regularization"</span>, l1 <span class="op">=</span> <span class="fl">0.01</span><span class="op">)</span></span>
<span></span>
<span><span class="va">net</span> <span class="op">&lt;-</span> </span>
<span>  <span class="fu"><a href="../reference/input.html">input</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span> </span>
<span>  <span class="fu"><a href="../reference/dense.html">dense</a></span><span class="op">(</span><span class="fl">1000</span>, <span class="st">"relu"</span><span class="op">)</span> <span class="op">+</span> <span class="fu"><a href="../reference/dropout.html">dropout</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span>
<span>  <span class="fu"><a href="../reference/dense.html">dense</a></span><span class="op">(</span><span class="fl">100</span>, <span class="st">"tanh"</span><span class="op">)</span> <span class="op">+</span> <span class="va">act_reg</span> <span class="op">+</span></span>
<span>  <span class="fu"><a href="../reference/dense.html">dense</a></span><span class="op">(</span><span class="fl">1000</span>, <span class="st">"relu"</span><span class="op">)</span> <span class="op">+</span> <span class="fu"><a href="../reference/dropout.html">dropout</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span>
<span>  <span class="fu"><a href="../reference/output.html">output</a></span><span class="op">(</span><span class="st">"sigmoid"</span><span class="op">)</span></span>
<span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">net</span><span class="op">)</span></span>
<span><span class="co">#&gt; Network structure:</span></span>
<span><span class="co">#&gt;  input</span></span>
<span><span class="co">#&gt;  dense(1000 units) - relu</span></span>
<span><span class="co">#&gt;  </span></span>
<span><span class="co">#&gt;  dense(100 units) - tanh</span></span>
<span><span class="co">#&gt;  </span></span>
<span><span class="co">#&gt;  dense(1000 units) - relu</span></span>
<span><span class="co">#&gt;  </span></span>
<span><span class="co">#&gt;  dense - sigmoid</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">net</span>, log <span class="op">=</span> <span class="cn">TRUE</span>, fg <span class="op">=</span> <span class="st">"#30707a"</span>, bg <span class="op">=</span> <span class="st">"#e0e6ea"</span><span class="op">)</span></span></code></pre></div>
<p><img src="architectures_files/figure-html/custom-1.png" width="480"></p>
  </div>

  <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">

      </div>

</div>



      <footer><div class="copyright">
  <p></p>
<p>Developed by <a href="http://deivi.ch" class="external-link">David Charte</a>, Francisco Charte, Francisco Herrera.</p>
</div>

<div class="pkgdown">
  <p></p>
<p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.0.7.</p>
</div>

      </footer>
</div>

  


  

  </body>
</html>
