CINXE.COM
Backend utilities
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="Keras documentation"> <meta name="author" content="Keras Team"> <link rel="shortcut icon" href="https://keras.io/img/favicon.ico"> <link rel="canonical" href="https://keras.io/2.18/api/utils/backend_utils/" /> <!-- Social --> <meta property="og:title" content="Keras documentation: Backend utilities"> <meta property="og:image" content="https://keras.io/img/logo-k-keras-wb.png"> <meta name="twitter:title" content="Keras documentation: Backend utilities"> <meta name="twitter:image" content="https://keras.io/img/k-keras-social.png"> <meta name="twitter:card" content="summary"> <title>Backend utilities</title> <!-- Bootstrap core CSS --> <link href="/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom fonts for this template --> <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700;800&display=swap" rel="stylesheet"> <!-- Custom styles for this template --> <link href="/css/docs.css" rel="stylesheet"> <link href="/css/monokai.css" rel="stylesheet"> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5DNGF4N'); </script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-175165319-128', 'auto'); ga('send', 'pageview'); </script> <!-- End Google Tag Manager --> <script async defer src="https://buttons.github.io/buttons.js"></script> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5DNGF4N" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class='k-page'> <div class="k-nav" id="nav-menu"> <a href='/'><img src='/img/logo-small.png' class='logo-small' /></a> <div class="nav flex-column nav-pills" role="tablist" aria-orientation="vertical"> <a class="nav-link" href="/about/" role="tab" aria-selected="">About Keras</a> <a class="nav-link" href="/getting_started/" role="tab" aria-selected="">Getting started</a> <a class="nav-link" href="/guides/" role="tab" aria-selected="">Developer guides</a> <a class="nav-link" href="/examples/" role="tab" aria-selected="">Code examples</a> <a class="nav-link" href="/api/" role="tab" aria-selected="">Keras 3 API documentation</a> <a class="nav-link active" href="/2.18/api/" role="tab" aria-selected="">Keras 2 API documentation</a> <a class="nav-sublink" href="/2.18/api/models/">Models API</a> <a class="nav-sublink" href="/2.18/api/layers/">Layers API</a> <a class="nav-sublink" href="/2.18/api/callbacks/">Callbacks API</a> <a class="nav-sublink" href="/2.18/api/optimizers/">Optimizers</a> <a class="nav-sublink" href="/2.18/api/metrics/">Metrics</a> <a class="nav-sublink" href="/2.18/api/losses/">Losses</a> <a class="nav-sublink" href="/2.18/api/data_loading/">Data loading</a> <a class="nav-sublink" href="/2.18/api/datasets/">Built-in small datasets</a> <a class="nav-sublink" href="/2.18/api/applications/">Keras Applications</a> <a class="nav-sublink" href="/2.18/api/mixed_precision/">Mixed precision</a> <a class="nav-sublink active" href="/2.18/api/utils/">Utilities</a> <a class="nav-sublink2" href="/2.18/api/utils/model_plotting_utils/">Model plotting utilities</a> <a class="nav-sublink2" href="/2.18/api/utils/feature_space/">Structured data preprocessing utilities</a> <a class="nav-sublink2" href="/2.18/api/utils/python_utils/">Python & NumPy utilities</a> <a class="nav-sublink2 active" href="/2.18/api/utils/backend_utils/">Backend utilities</a> <a class="nav-link" href="/keras_tuner/" role="tab" aria-selected="">KerasTuner: Hyperparam Tuning</a> <a class="nav-link" href="/keras_hub/" role="tab" aria-selected="">KerasHub: Pretrained Models</a> </div> </div> <div class='k-main'> <div class='k-main-top'> <script> function displayDropdownMenu() { e = document.getElementById("nav-menu"); if (e.style.display == "block") { e.style.display = "none"; } else { e.style.display = "block"; document.getElementById("dropdown-nav").style.display = "block"; } } function resetMobileUI() { if (window.innerWidth <= 840) { document.getElementById("nav-menu").style.display = "none"; document.getElementById("dropdown-nav").style.display = "block"; } else { document.getElementById("nav-menu").style.display = "block"; document.getElementById("dropdown-nav").style.display = "none"; } var navmenu = document.getElementById("nav-menu"); var menuheight = navmenu.clientHeight; var kmain = document.getElementById("k-main-id"); kmain.style.minHeight = (menuheight + 100) + 'px'; } window.onresize = resetMobileUI; window.addEventListener("load", (event) => { resetMobileUI() }); </script> <div id='dropdown-nav' onclick="displayDropdownMenu();"> <svg viewBox="-20 -20 120 120" width="60" height="60"> <rect width="100" height="20"></rect> <rect y="30" width="100" height="20"></rect> <rect y="60" width="100" height="20"></rect> </svg> </div> <form class="bd-search d-flex align-items-center k-search-form" id="search-form"> <input type="search" class="k-search-input" id="search-input" placeholder="Search Keras documentation..." aria-label="Search Keras documentation..." autocomplete="off"> <button class="k-search-btn"> <svg width="13" height="13" viewBox="0 0 13 13"><title>search</title><path d="m4.8495 7.8226c0.82666 0 1.5262-0.29146 2.0985-0.87438 0.57232-0.58292 0.86378-1.2877 0.87438-2.1144 0.010599-0.82666-0.28086-1.5262-0.87438-2.0985-0.59352-0.57232-1.293-0.86378-2.0985-0.87438-0.8055-0.010599-1.5103 0.28086-2.1144 0.87438-0.60414 0.59352-0.8956 1.293-0.87438 2.0985 0.021197 0.8055 0.31266 1.5103 0.87438 2.1144 0.56172 0.60414 1.2665 0.8956 2.1144 0.87438zm4.4695 0.2115 3.681 3.6819-1.259 1.284-3.6817-3.7 0.0019784-0.69479-0.090043-0.098846c-0.87973 0.76087-1.92 1.1413-3.1207 1.1413-1.3553 0-2.5025-0.46363-3.4417-1.3909s-1.4088-2.0686-1.4088-3.4239c0-1.3553 0.4696-2.4966 1.4088-3.4239 0.9392-0.92727 2.0864-1.3969 3.4417-1.4088 1.3553-0.011889 2.4906 0.45771 3.406 1.4088 0.9154 0.95107 1.379 2.0924 1.3909 3.4239 0 1.2126-0.38043 2.2588-1.1413 3.1385l0.098834 0.090049z"></path></svg> </button> </form> <script> var form = document.getElementById('search-form'); form.onsubmit = function(e) { e.preventDefault(); var query = document.getElementById('search-input').value; window.location.href = '/search.html?query=' + query; return False } </script> </div> <div class='k-main-inner' id='k-main-id'> <div class='k-location-slug'> <span class="k-location-slug-pointer">►</span> <a href='/2.18/api/'>Keras 2 API documentation</a> / <a href='/2.18/api/utils/'>Utilities</a> / Backend utilities </div> <div class='k-content'> <h1 id="backend-utilities">Backend utilities</h1> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend.py#L226">[source]</a></span></p> <h3 id="clearsession-function"><code>clear_session</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">clear_session</span><span class="p">()</span> </code></pre></div> <p>Resets all state generated by TF-Keras.</p> <p>TF-Keras manages a global state, which it uses to implement the Functional model-building API and to uniquify autogenerated layer names.</p> <p>If you are creating many models in a loop, this global state will consume an increasing amount of memory over time, and you may want to clear it. Calling <code>clear_session()</code> releases the global state: this helps avoid clutter from old models and layers, especially when memory is limited.</p> <p>Example 1: calling <code>clear_session()</code> when creating models in a loop</p> <div class="codehilite"><pre><span></span><code><span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span> <span class="c1"># Without `clear_session()`, each iteration of this loop will</span> <span class="c1"># slightly increase the size of the global state managed by Keras</span> <span class="n">model</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">Sequential</span><span class="p">([</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)])</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span> <span class="c1"># With `clear_session()` called at the beginning,</span> <span class="c1"># TF-Keras starts with a blank state at each iteration</span> <span class="c1"># and memory consumption is constant over time.</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">clear_session</span><span class="p">()</span> <span class="n">model</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">Sequential</span><span class="p">([</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)])</span> </code></pre></div> <p>Example 2: resetting the layer name generation counter</p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="kn">import</span><span class="w"> </span><span class="nn">tensorflow</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">tf</span> <span class="o">>>></span> <span class="n">layers</span> <span class="o">=</span> <span class="p">[</span><span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)]</span> <span class="o">>>></span> <span class="n">new_layer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="o">>>></span> <span class="nb">print</span><span class="p">(</span><span class="n">new_layer</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="n">dense_10</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_learning_phase</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">>>></span> <span class="nb">print</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">learning_phase</span><span class="p">())</span> <span class="mi">1</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">clear_session</span><span class="p">()</span> <span class="o">>>></span> <span class="n">new_layer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="o">>>></span> <span class="nb">print</span><span class="p">(</span><span class="n">new_layer</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="n">dense</span> </code></pre></div> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend_config.py#L66">[source]</a></span></p> <h3 id="floatx-function"><code>floatx</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">floatx</span><span class="p">()</span> </code></pre></div> <p>Returns the default float type, as a string.</p> <p>E.g. <code>'float16'</code>, <code>'float32'</code>, <code>'float64'</code>.</p> <p><strong>Returns</strong></p> <p>String, the current default float type.</p> <p><strong>Example</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">floatx</span><span class="p">()</span> <span class="s1">'float32'</span> </code></pre></div> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend_config.py#L82">[source]</a></span></p> <h3 id="setfloatx-function"><code>set_floatx</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_floatx</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> </code></pre></div> <p>Sets the default float type.</p> <p>Note: It is not recommended to set this to float16 for training, as this will likely cause numeric stability issues. Instead, mixed precision, which is using a mix of float16 and float32, can be used by calling <code>tf.keras.mixed_precision.set_global_policy('mixed_float16')</code>. See the <a href="https://www.tensorflow.org/guide/keras/mixed_precision">mixed precision guide</a> for details.</p> <p><strong>Arguments</strong></p> <ul> <li><strong>value</strong>: String; <code>'float16'</code>, <code>'float32'</code>, or <code>'float64'</code>.</li> </ul> <p><strong>Example</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">floatx</span><span class="p">()</span> <span class="s1">'float32'</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_floatx</span><span class="p">(</span><span class="s1">'float64'</span><span class="p">)</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">floatx</span><span class="p">()</span> <span class="s1">'float64'</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_floatx</span><span class="p">(</span><span class="s1">'float32'</span><span class="p">)</span> </code></pre></div> <p><strong>Raises</strong></p> <ul> <li><strong>ValueError</strong>: In case of invalid value.</li> </ul> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend_config.py#L117">[source]</a></span></p> <h3 id="imagedataformat-function"><code>image_data_format</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">image_data_format</span><span class="p">()</span> </code></pre></div> <p>Returns the default image data format convention.</p> <p><strong>Returns</strong></p> <p>A string, either <code>'channels_first'</code> or <code>'channels_last'</code></p> <p><strong>Example</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">image_data_format</span><span class="p">()</span> <span class="s1">'channels_last'</span> </code></pre></div> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend_config.py#L132">[source]</a></span></p> <h3 id="setimagedataformat-function"><code>set_image_data_format</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_image_data_format</span><span class="p">(</span><span class="n">data_format</span><span class="p">)</span> </code></pre></div> <p>Sets the value of the image data format convention.</p> <p><strong>Arguments</strong></p> <ul> <li><strong>data_format</strong>: string. <code>'channels_first'</code> or <code>'channels_last'</code>.</li> </ul> <p><strong>Example</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">image_data_format</span><span class="p">()</span> <span class="s1">'channels_last'</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_image_data_format</span><span class="p">(</span><span class="s1">'channels_first'</span><span class="p">)</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">image_data_format</span><span class="p">()</span> <span class="s1">'channels_first'</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_image_data_format</span><span class="p">(</span><span class="s1">'channels_last'</span><span class="p">)</span> </code></pre></div> <p><strong>Raises</strong></p> <ul> <li><strong>ValueError</strong>: In case of invalid <code>data_format</code> value.</li> </ul> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend_config.py#L32">[source]</a></span></p> <h3 id="epsilon-function"><code>epsilon</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">epsilon</span><span class="p">()</span> </code></pre></div> <p>Returns the value of the fuzz factor used in numeric expressions.</p> <p><strong>Returns</strong></p> <p>A float.</p> <p><strong>Example</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">epsilon</span><span class="p">()</span> <span class="mf">1e-07</span> </code></pre></div> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend_config.py#L47">[source]</a></span></p> <h3 id="setepsilon-function"><code>set_epsilon</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_epsilon</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> </code></pre></div> <p>Sets the value of the fuzz factor used in numeric expressions.</p> <p><strong>Arguments</strong></p> <ul> <li><strong>value</strong>: float. New value of epsilon.</li> </ul> <p><strong>Example</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">epsilon</span><span class="p">()</span> <span class="mf">1e-07</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_epsilon</span><span class="p">(</span><span class="mf">1e-5</span><span class="p">)</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">epsilon</span><span class="p">()</span> <span class="mf">1e-05</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">set_epsilon</span><span class="p">(</span><span class="mf">1e-7</span><span class="p">)</span> </code></pre></div> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend.py#L1291">[source]</a></span></p> <h3 id="iskerastensor-function"><code>is_keras_tensor</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">is_keras_tensor</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> </code></pre></div> <p>Returns whether <code>x</code> is a TF-Keras tensor.</p> <p>A "Keras tensor" is a tensor that was returned by a TF-Keras layer, (<code>Layer</code> class) or by <code>Input</code>.</p> <p><strong>Arguments</strong></p> <ul> <li><strong>x</strong>: A candidate tensor.</li> </ul> <p><strong>Returns</strong></p> <ul> <li><strong>A boolean</strong>: Whether the argument is a TF-Keras tensor.</li> </ul> <p><strong>Raises</strong></p> <ul> <li><strong>ValueError</strong>: In case <code>x</code> is not a symbolic tensor.</li> </ul> <p><strong>Examples</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">np_var</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span> <span class="o">>>></span> <span class="c1"># A numpy array is not a symbolic tensor.</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">is_keras_tensor</span><span class="p">(</span><span class="n">np_var</span><span class="p">)</span> <span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span> <span class="o">...</span> <span class="ne">ValueError</span><span class="p">:</span> <span class="n">Unexpectedly</span> <span class="n">found</span> <span class="n">an</span> <span class="n">instance</span> <span class="n">of</span> <span class="nb">type</span> <span class="err">`</span><span class="o"><</span><span class="k">class</span><span class="w"> </span><span class="err">'</span><span class="nc">numpy</span><span class="o">.</span><span class="n">ndarray</span><span class="s1">'>`.</span> <span class="n">Expected</span> <span class="n">a</span> <span class="n">symbolic</span> <span class="n">tensor</span> <span class="n">instance</span><span class="o">.</span> <span class="o">>>></span> <span class="n">keras_var</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">variable</span><span class="p">(</span><span class="n">np_var</span><span class="p">)</span> <span class="o">>>></span> <span class="c1"># A variable created with the keras backend is not a TF-Keras tensor.</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">is_keras_tensor</span><span class="p">(</span><span class="n">keras_var</span><span class="p">)</span> <span class="kc">False</span> <span class="o">>>></span> <span class="n">keras_placeholder</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span> <span class="o">>>></span> <span class="c1"># A placeholder is a TF-Keras tensor.</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">is_keras_tensor</span><span class="p">(</span><span class="n">keras_placeholder</span><span class="p">)</span> <span class="kc">True</span> <span class="o">>>></span> <span class="n">keras_input</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Input</span><span class="p">([</span><span class="mi">10</span><span class="p">])</span> <span class="o">>>></span> <span class="c1"># An Input is a TF-Keras tensor.</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">is_keras_tensor</span><span class="p">(</span><span class="n">keras_input</span><span class="p">)</span> <span class="kc">True</span> <span class="o">>>></span> <span class="n">keras_layer_output</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">)(</span><span class="n">keras_input</span><span class="p">)</span> <span class="o">>>></span> <span class="c1"># Any TF-Keras layer output is a TF-Keras tensor.</span> <span class="o">>>></span> <span class="n">tf</span><span class="o">.</span><span class="n">keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">is_keras_tensor</span><span class="p">(</span><span class="n">keras_layer_output</span><span class="p">)</span> <span class="kc">True</span> </code></pre></div> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend.py#L192">[source]</a></span></p> <h3 id="getuid-function"><code>get_uid</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">get_uid</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> </code></pre></div> <p>Associates a string prefix with an integer counter in a TensorFlow graph.</p> <p><strong>Arguments</strong></p> <ul> <li><strong>prefix</strong>: String prefix to index.</li> </ul> <p><strong>Returns</strong></p> <p>Unique integer ID.</p> <p><strong>Example</strong></p> <div class="codehilite"><pre><span></span><code><span class="o">>>></span> <span class="n">get_uid</span><span class="p">(</span><span class="s1">'dense'</span><span class="p">)</span> <span class="mi">1</span> <span class="o">>>></span> <span class="n">get_uid</span><span class="p">(</span><span class="s1">'dense'</span><span class="p">)</span> <span class="mi">2</span> </code></pre></div> <hr /> <p><span style="float:right;"><a href="https://github.com/keras-team/tf-keras/tree/v2.18.0/tf_keras/backend.py#L4723">[source]</a></span></p> <h3 id="rnn-function"><code>rnn</code> function</h3> <div class="codehilite"><pre><span></span><code><span class="n">tf_keras</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">rnn</span><span class="p">(</span> <span class="n">step_function</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">initial_states</span><span class="p">,</span> <span class="n">go_backwards</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">constants</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">unroll</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">input_length</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">time_major</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">zero_output_for_mask</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">return_all_outputs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="p">)</span> </code></pre></div> <p>Iterates over the time dimension of a tensor.</p> <p><strong>Arguments</strong></p> <ul> <li><strong>step_function</strong>: RNN step function. Args; input; Tensor with shape <code>(samples, ...)</code> (no time dimension), representing input for the batch of samples at a certain time step. states; List of tensors. Returns; output; Tensor with shape <code>(samples, output_dim)</code> (no time dimension). new_states; List of tensors, same length and shapes as 'states'. The first state in the list must be the output tensor at the previous timestep.</li> <li><strong>inputs</strong>: Tensor of temporal data of shape <code>(samples, time, ...)</code> (at least 3D), or nested tensors, and each of which has shape <code>(samples, time, ...)</code>.</li> <li><strong>initial_states</strong>: Tensor with shape <code>(samples, state_size)</code> (no time dimension), containing the initial values for the states used in the step function. In the case that state_size is in a nested shape, the shape of initial_states will also follow the nested structure.</li> <li><strong>go_backwards</strong>: Boolean. If True, do the iteration over the time dimension in reverse order and return the reversed sequence.</li> <li><strong>mask</strong>: Binary tensor with shape <code>(samples, time, 1)</code>, with a zero for every element that is masked.</li> <li><strong>constants</strong>: List of constant values passed at each step.</li> <li><strong>unroll</strong>: Whether to unroll the RNN or to use a symbolic <code>while_loop</code>.</li> <li><strong>input_length</strong>: An integer or a 1-D Tensor, depending on whether the time dimension is fixed-length or not. In case of variable length input, it is used for masking in case there's no mask specified.</li> <li><strong>time_major</strong>: Boolean. If true, the inputs and outputs will be in shape <code>(timesteps, batch, ...)</code>, whereas in the False case, it will be <code>(batch, timesteps, ...)</code>. Using <code>time_major = True</code> is a bit more efficient because it avoids transposes at the beginning and end of the RNN calculation. However, most TensorFlow data is batch-major, so by default this function accepts input and emits output in batch-major form.</li> <li><strong>zero_output_for_mask</strong>: Boolean. If True, the output for masked timestep will be zeros, whereas in the False case, output from previous timestep is returned.</li> <li><strong>return_all_outputs</strong>: Boolean. If True, return the recurrent outputs for all timesteps in the sequence. If False, only return the output for the last timestep (which consumes less memory).</li> </ul> <p><strong>Returns</strong></p> <p>A tuple, <code>(last_output, outputs, new_states)</code>. last_output: the latest output of the rnn, of shape <code>(samples, ...)</code> outputs: - If <code>return_all_outputs=True</code>: a tensor with shape <code>(samples, time, ...)</code> where each entry <code>outputs[s, t]</code> is the output of the step function at time <code>t</code> for sample <code>s</code> - Else, a tensor equal to <code>last_output</code> with shape <code>(samples, 1, ...)</code> new_states: list of tensors, latest states returned by the step function, of shape <code>(samples, ...)</code>.</p> <p><strong>Raises</strong></p> <ul> <li><strong>ValueError</strong>: if input dimension is less than 3.</li> <li><strong>ValueError</strong>: if <code>unroll</code> is <code>True</code> but input timestep is not a fixed number.</li> <li><strong>ValueError</strong>: if <code>mask</code> is provided (not <code>None</code>) but states is not provided (<code>len(states)</code> == 0).</li> </ul> <hr /> </div> <div class='k-outline'> <div class='k-outline-depth-1'> <a href='#backend-utilities'>Backend utilities</a> </div> <div class='k-outline-depth-3'> <a href='#clearsession-function'><code>clear_session</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#floatx-function'><code>floatx</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#setfloatx-function'><code>set_floatx</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#imagedataformat-function'><code>image_data_format</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#setimagedataformat-function'><code>set_image_data_format</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#epsilon-function'><code>epsilon</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#setepsilon-function'><code>set_epsilon</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#iskerastensor-function'><code>is_keras_tensor</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#getuid-function'><code>get_uid</code> function</a> </div> <div class='k-outline-depth-3'> <a href='#rnn-function'><code>rnn</code> function</a> </div> </div> </div> </div> </div> </body> <footer style="float: left; width: 100%; padding: 1em; border-top: solid 1px #bbb;"> <a href="https://policies.google.com/terms">Terms</a> | <a href="https://policies.google.com/privacy">Privacy</a> </footer> </html>