CINXE.COM

Keras Applications

<!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/api/applications/" /> <!-- Social --> <meta property="og:title" content="Keras documentation: Keras Applications"> <meta property="og:image" content="https://keras.io/img/logo-k-keras-wb.png"> <meta name="twitter:title" content="Keras documentation: Keras Applications"> <meta name="twitter:image" content="https://keras.io/img/k-keras-social.png"> <meta name="twitter:card" content="summary"> <title>Keras Applications</title> <!-- Custom fonts for this template --> <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700;800&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;600;700;800&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400&display=swap" rel="stylesheet"> <!-- Bootstrap core CSS --> <link href="/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="/css/docs.css?v=3" 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> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> </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="hidden"> None </div> <nav class="nav__container"> <div class="nav__wrapper"> <div class="nav__controls--mobile"> <button class="nav__menu--button"><i class="icon--menu"></i></button> <button class="nav__menu--close"><i class="icon--close"></i></button> <a href="/"> <img class="nav__logo nav__logo--mobile" src="/img/k-logo.png" /> </a> <button class="nav__search--mobile"> <i class="icon__search--mobile"></i> </button> </div> <form class="nav__search nav__search-form--mobile"> <input class="nav__search--input" type="search" placeholder="SEARCH" aria-label="Search" /> <button class="nav__search--button" type="submit"> <i class="icon--search"></i> </button> </form> <div class="k-nav nav__mobile-menu" id="nav-menu"> <!-- version with just the active item visible --> <div class="nav flex-column nav-pills" role="tablist" aria-orientation="vertical"> <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 active" href="/api/" role="tab" aria-selected="">Keras 3 API documentation</a> <a class="nav-sublink" href="/api/models/">Models API</a> <a class="nav-sublink" href="/api/layers/">Layers API</a> <a class="nav-sublink" href="/api/callbacks/">Callbacks API</a> <a class="nav-sublink" href="/api/ops/">Ops API</a> <a class="nav-sublink" href="/api/optimizers/">Optimizers</a> <a class="nav-sublink" href="/api/metrics/">Metrics</a> <a class="nav-sublink" href="/api/losses/">Losses</a> <a class="nav-sublink" href="/api/data_loading/">Data loading</a> <a class="nav-sublink" href="/api/datasets/">Built-in small datasets</a> <a class="nav-sublink active" href="/api/applications/">Keras Applications</a> <a class="nav-sublink2" href="/api/applications/xception/">Xception</a> <a class="nav-sublink2" href="/api/applications/efficientnet/">EfficientNet B0 to B7</a> <a class="nav-sublink2" href="/api/applications/efficientnet_v2/">EfficientNetV2 B0 to B3 and S, M, L</a> <a class="nav-sublink2" href="/api/applications/convnext/">ConvNeXt Tiny, Small, Base, Large, XLarge</a> <a class="nav-sublink2" href="/api/applications/vgg/">VGG16 and VGG19</a> <a class="nav-sublink2" href="/api/applications/resnet/">ResNet and ResNetV2</a> <a class="nav-sublink2" href="/api/applications/mobilenet/">MobileNet, MobileNetV2, and MobileNetV3</a> <a class="nav-sublink2" href="/api/applications/densenet/">DenseNet</a> <a class="nav-sublink2" href="/api/applications/nasnet/">NasNetLarge and NasNetMobile</a> <a class="nav-sublink2" href="/api/applications/inceptionv3/">InceptionV3</a> <a class="nav-sublink2" href="/api/applications/inceptionresnetv2/">InceptionResNetV2</a> <a class="nav-sublink" href="/api/mixed_precision/">Mixed precision</a> <a class="nav-sublink" href="/api/distribution/">Multi-device distribution</a> <a class="nav-sublink" href="/api/random/">RNG API</a> <a class="nav-sublink" href="/api/rematerialization/">Rematerialization</a> <a class="nav-sublink" href="/api/utils/">Utilities</a> <a class="nav-link" href="/2/api/" role="tab" aria-selected="">Keras 2 API documentation</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> <a href="/"> <img class="nav__logo nav__logo--desktop" src="/img/logo.png" alt="keras.io logo" /> </a> <div class="nav__menu"> <ul class="nav__item--container"> <li class="nav__item"> <a class="nav__link" href="/getting_started/">Get started</a> </li> <li class="nav__item"> <a class="nav__link" href="/guides/">Guides</a> </li> <li class="nav__item"> <a class="nav__link nav__link--active" href="/api/">API Docs</a> </li> <li class="nav__item"> <a class="nav__link" href="/examples/">Examples</a> </li> <li class="nav__item"> <a class="nav__link" href="/keras_tuner/">Keras Tuner</a> </li> <li class="nav__item"> <a class="nav__link" href="/keras_hub/">Keras Hub</a> </li> </ul> <form class="nav__search"> <input class="nav__search--input" type="search" placeholder="SEARCH" aria-label="Search" /> <button class="nav__search--button" type="submit"> <i class="icon--search"></i> </button> </form> </div> </div> </nav> <div class="page__container flex__container"> <div class="nav__side-nav" id="nav-menu"> <div class="nav flex-column nav-pills" role="tablist" aria-orientation="vertical"> <a class="nav-link active" href="/api/" role="tab" aria-selected=""> Keras 3 API documentation </a> <div class="nav-expanded-panel"> <a class="nav-sublink" href="/api/models/">Models API</a> <a class="nav-sublink" href="/api/layers/">Layers API</a> <a class="nav-sublink" href="/api/callbacks/">Callbacks API</a> <a class="nav-sublink" href="/api/ops/">Ops API</a> <a class="nav-sublink" href="/api/optimizers/">Optimizers</a> <a class="nav-sublink" href="/api/metrics/">Metrics</a> <a class="nav-sublink" href="/api/losses/">Losses</a> <a class="nav-sublink" href="/api/data_loading/">Data loading</a> <a class="nav-sublink" href="/api/datasets/">Built-in small datasets</a> <a class="nav-sublink active" href="/api/applications/">Keras Applications</a> <a class="nav-sublink2" href="/api/applications/xception/">Xception</a> <a class="nav-sublink2" href="/api/applications/efficientnet/">EfficientNet B0 to B7</a> <a class="nav-sublink2" href="/api/applications/efficientnet_v2/">EfficientNetV2 B0 to B3 and S, M, L</a> <a class="nav-sublink2" href="/api/applications/convnext/">ConvNeXt Tiny, Small, Base, Large, XLarge</a> <a class="nav-sublink2" href="/api/applications/vgg/">VGG16 and VGG19</a> <a class="nav-sublink2" href="/api/applications/resnet/">ResNet and ResNetV2</a> <a class="nav-sublink2" href="/api/applications/mobilenet/">MobileNet, MobileNetV2, and MobileNetV3</a> <a class="nav-sublink2" href="/api/applications/densenet/">DenseNet</a> <a class="nav-sublink2" href="/api/applications/nasnet/">NasNetLarge and NasNetMobile</a> <a class="nav-sublink2" href="/api/applications/inceptionv3/">InceptionV3</a> <a class="nav-sublink2" href="/api/applications/inceptionresnetv2/">InceptionResNetV2</a> <a class="nav-sublink" href="/api/mixed_precision/">Mixed precision</a> <a class="nav-sublink" href="/api/distribution/">Multi-device distribution</a> <a class="nav-sublink" href="/api/random/">RNG API</a> <a class="nav-sublink" href="/api/rematerialization/">Rematerialization</a> <a class="nav-sublink" href="/api/utils/">Utilities</a> </div> <a class="nav-link" href="/2/api/" role="tab" aria-selected=""> Keras 2 API documentation </a> </div> </div> <div class="k-main"> <div class='k-main-inner' id='k-main-id'> <div class='k-content'> <div class='k-location-slug'> <span class="k-location-slug-pointer">►</span> <a href='/api/'>Keras 3 API documentation</a> / Keras Applications </div> <h1 id="keras-applications">Keras Applications</h1> <p>Keras Applications are deep learning models that are made available alongside pre-trained weights. These models can be used for prediction, feature extraction, and fine-tuning.</p> <p>Weights are downloaded automatically when instantiating a model. They are stored at <code>~/.keras/models/</code>.</p> <p>Upon instantiation, the models will be built according to the image data format set in your Keras configuration file at <code>~/.keras/keras.json</code>. For instance, if you have set <code>image_data_format=channels_last</code>, then any model loaded from this repository will get built according to the data format convention "Height-Width-Depth".</p> <h2 id="available-models">Available models</h2> <table> <thead> <tr> <th>Model</th> <th style="text-align: right;">Size (MB)</th> <th style="text-align: right;">Top-1 Accuracy</th> <th style="text-align: right;">Top-5 Accuracy</th> <th style="text-align: right;">Parameters</th> <th style="text-align: right;">Depth</th> <th style="text-align: right;">Time (ms) per inference step (CPU)</th> <th style="text-align: right;">Time (ms) per inference step (GPU)</th> </tr> </thead> <tbody> <tr> <td><a href="xception">Xception</a></td> <td style="text-align: right;">88</td> <td style="text-align: right;">79.0%</td> <td style="text-align: right;">94.5%</td> <td style="text-align: right;">22.9M</td> <td style="text-align: right;">81</td> <td style="text-align: right;">109.4</td> <td style="text-align: right;">8.1</td> </tr> <tr> <td><a href="vgg/#vgg16-function">VGG16</a></td> <td style="text-align: right;">528</td> <td style="text-align: right;">71.3%</td> <td style="text-align: right;">90.1%</td> <td style="text-align: right;">138.4M</td> <td style="text-align: right;">16</td> <td style="text-align: right;">69.5</td> <td style="text-align: right;">4.2</td> </tr> <tr> <td><a href="vgg/#vgg19-function">VGG19</a></td> <td style="text-align: right;">549</td> <td style="text-align: right;">71.3%</td> <td style="text-align: right;">90.0%</td> <td style="text-align: right;">143.7M</td> <td style="text-align: right;">19</td> <td style="text-align: right;">84.8</td> <td style="text-align: right;">4.4</td> </tr> <tr> <td><a href="resnet/#resnet50-function">ResNet50</a></td> <td style="text-align: right;">98</td> <td style="text-align: right;">74.9%</td> <td style="text-align: right;">92.1%</td> <td style="text-align: right;">25.6M</td> <td style="text-align: right;">107</td> <td style="text-align: right;">58.2</td> <td style="text-align: right;">4.6</td> </tr> <tr> <td><a href="resnet/#resnet50v2-function">ResNet50V2</a></td> <td style="text-align: right;">98</td> <td style="text-align: right;">76.0%</td> <td style="text-align: right;">93.0%</td> <td style="text-align: right;">25.6M</td> <td style="text-align: right;">103</td> <td style="text-align: right;">45.6</td> <td style="text-align: right;">4.4</td> </tr> <tr> <td><a href="resnet/#resnet101-function">ResNet101</a></td> <td style="text-align: right;">171</td> <td style="text-align: right;">76.4%</td> <td style="text-align: right;">92.8%</td> <td style="text-align: right;">44.7M</td> <td style="text-align: right;">209</td> <td style="text-align: right;">89.6</td> <td style="text-align: right;">5.2</td> </tr> <tr> <td><a href="resnet/#resnet101v2-function">ResNet101V2</a></td> <td style="text-align: right;">171</td> <td style="text-align: right;">77.2%</td> <td style="text-align: right;">93.8%</td> <td style="text-align: right;">44.7M</td> <td style="text-align: right;">205</td> <td style="text-align: right;">72.7</td> <td style="text-align: right;">5.4</td> </tr> <tr> <td><a href="resnet/#resnet152-function">ResNet152</a></td> <td style="text-align: right;">232</td> <td style="text-align: right;">76.6%</td> <td style="text-align: right;">93.1%</td> <td style="text-align: right;">60.4M</td> <td style="text-align: right;">311</td> <td style="text-align: right;">127.4</td> <td style="text-align: right;">6.5</td> </tr> <tr> <td><a href="resnet/#resnet152v2-function">ResNet152V2</a></td> <td style="text-align: right;">232</td> <td style="text-align: right;">78.0%</td> <td style="text-align: right;">94.2%</td> <td style="text-align: right;">60.4M</td> <td style="text-align: right;">307</td> <td style="text-align: right;">107.5</td> <td style="text-align: right;">6.6</td> </tr> <tr> <td><a href="inceptionv3">InceptionV3</a></td> <td style="text-align: right;">92</td> <td style="text-align: right;">77.9%</td> <td style="text-align: right;">93.7%</td> <td style="text-align: right;">23.9M</td> <td style="text-align: right;">189</td> <td style="text-align: right;">42.2</td> <td style="text-align: right;">6.9</td> </tr> <tr> <td><a href="inceptionresnetv2">InceptionResNetV2</a></td> <td style="text-align: right;">215</td> <td style="text-align: right;">80.3%</td> <td style="text-align: right;">95.3%</td> <td style="text-align: right;">55.9M</td> <td style="text-align: right;">449</td> <td style="text-align: right;">130.2</td> <td style="text-align: right;">10.0</td> </tr> <tr> <td><a href="mobilenet">MobileNet</a></td> <td style="text-align: right;">16</td> <td style="text-align: right;">70.4%</td> <td style="text-align: right;">89.5%</td> <td style="text-align: right;">4.3M</td> <td style="text-align: right;">55</td> <td style="text-align: right;">22.6</td> <td style="text-align: right;">3.4</td> </tr> <tr> <td><a href="mobilenet/#mobilenetv2-function">MobileNetV2</a></td> <td style="text-align: right;">14</td> <td style="text-align: right;">71.3%</td> <td style="text-align: right;">90.1%</td> <td style="text-align: right;">3.5M</td> <td style="text-align: right;">105</td> <td style="text-align: right;">25.9</td> <td style="text-align: right;">3.8</td> </tr> <tr> <td><a href="densenet/#densenet121-function">DenseNet121</a></td> <td style="text-align: right;">33</td> <td style="text-align: right;">75.0%</td> <td style="text-align: right;">92.3%</td> <td style="text-align: right;">8.1M</td> <td style="text-align: right;">242</td> <td style="text-align: right;">77.1</td> <td style="text-align: right;">5.4</td> </tr> <tr> <td><a href="densenet/#densenet169-function">DenseNet169</a></td> <td style="text-align: right;">57</td> <td style="text-align: right;">76.2%</td> <td style="text-align: right;">93.2%</td> <td style="text-align: right;">14.3M</td> <td style="text-align: right;">338</td> <td style="text-align: right;">96.4</td> <td style="text-align: right;">6.3</td> </tr> <tr> <td><a href="densenet/#densenet201-function">DenseNet201</a></td> <td style="text-align: right;">80</td> <td style="text-align: right;">77.3%</td> <td style="text-align: right;">93.6%</td> <td style="text-align: right;">20.2M</td> <td style="text-align: right;">402</td> <td style="text-align: right;">127.2</td> <td style="text-align: right;">6.7</td> </tr> <tr> <td><a href="nasnet/#nasnetmobile-function">NASNetMobile</a></td> <td style="text-align: right;">23</td> <td style="text-align: right;">74.4%</td> <td style="text-align: right;">91.9%</td> <td style="text-align: right;">5.3M</td> <td style="text-align: right;">389</td> <td style="text-align: right;">27.0</td> <td style="text-align: right;">6.7</td> </tr> <tr> <td><a href="nasnet/#nasnetlarge-function">NASNetLarge</a></td> <td style="text-align: right;">343</td> <td style="text-align: right;">82.5%</td> <td style="text-align: right;">96.0%</td> <td style="text-align: right;">88.9M</td> <td style="text-align: right;">533</td> <td style="text-align: right;">344.5</td> <td style="text-align: right;">20.0</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb0-function">EfficientNetB0</a></td> <td style="text-align: right;">29</td> <td style="text-align: right;">77.1%</td> <td style="text-align: right;">93.3%</td> <td style="text-align: right;">5.3M</td> <td style="text-align: right;">132</td> <td style="text-align: right;">46.0</td> <td style="text-align: right;">4.9</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb1-function">EfficientNetB1</a></td> <td style="text-align: right;">31</td> <td style="text-align: right;">79.1%</td> <td style="text-align: right;">94.4%</td> <td style="text-align: right;">7.9M</td> <td style="text-align: right;">186</td> <td style="text-align: right;">60.2</td> <td style="text-align: right;">5.6</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb2-function">EfficientNetB2</a></td> <td style="text-align: right;">36</td> <td style="text-align: right;">80.1%</td> <td style="text-align: right;">94.9%</td> <td style="text-align: right;">9.2M</td> <td style="text-align: right;">186</td> <td style="text-align: right;">80.8</td> <td style="text-align: right;">6.5</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb3-function">EfficientNetB3</a></td> <td style="text-align: right;">48</td> <td style="text-align: right;">81.6%</td> <td style="text-align: right;">95.7%</td> <td style="text-align: right;">12.3M</td> <td style="text-align: right;">210</td> <td style="text-align: right;">140.0</td> <td style="text-align: right;">8.8</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb4-function">EfficientNetB4</a></td> <td style="text-align: right;">75</td> <td style="text-align: right;">82.9%</td> <td style="text-align: right;">96.4%</td> <td style="text-align: right;">19.5M</td> <td style="text-align: right;">258</td> <td style="text-align: right;">308.3</td> <td style="text-align: right;">15.1</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb5-function">EfficientNetB5</a></td> <td style="text-align: right;">118</td> <td style="text-align: right;">83.6%</td> <td style="text-align: right;">96.7%</td> <td style="text-align: right;">30.6M</td> <td style="text-align: right;">312</td> <td style="text-align: right;">579.2</td> <td style="text-align: right;">25.3</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb6-function">EfficientNetB6</a></td> <td style="text-align: right;">166</td> <td style="text-align: right;">84.0%</td> <td style="text-align: right;">96.8%</td> <td style="text-align: right;">43.3M</td> <td style="text-align: right;">360</td> <td style="text-align: right;">958.1</td> <td style="text-align: right;">40.4</td> </tr> <tr> <td><a href="efficientnet/#efficientnetb7-function">EfficientNetB7</a></td> <td style="text-align: right;">256</td> <td style="text-align: right;">84.3%</td> <td style="text-align: right;">97.0%</td> <td style="text-align: right;">66.7M</td> <td style="text-align: right;">438</td> <td style="text-align: right;">1578.9</td> <td style="text-align: right;">61.6</td> </tr> <tr> <td><a href="efficientnet_v2/#efficientnetv2b0-function">EfficientNetV2B0</a></td> <td style="text-align: right;">29</td> <td style="text-align: right;">78.7%</td> <td style="text-align: right;">94.3%</td> <td style="text-align: right;">7.2M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="efficientnet_v2/#efficientnetv2b1-function">EfficientNetV2B1</a></td> <td style="text-align: right;">34</td> <td style="text-align: right;">79.8%</td> <td style="text-align: right;">95.0%</td> <td style="text-align: right;">8.2M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="efficientnet_v2/#efficientnetv2b2-function">EfficientNetV2B2</a></td> <td style="text-align: right;">42</td> <td style="text-align: right;">80.5%</td> <td style="text-align: right;">95.1%</td> <td style="text-align: right;">10.2M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="efficientnet_v2/#efficientnetv2b3-function">EfficientNetV2B3</a></td> <td style="text-align: right;">59</td> <td style="text-align: right;">82.0%</td> <td style="text-align: right;">95.8%</td> <td style="text-align: right;">14.5M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="efficientnet_v2/#efficientnetv2s-function">EfficientNetV2S</a></td> <td style="text-align: right;">88</td> <td style="text-align: right;">83.9%</td> <td style="text-align: right;">96.7%</td> <td style="text-align: right;">21.6M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="efficientnet_v2/#efficientnetv2m-function">EfficientNetV2M</a></td> <td style="text-align: right;">220</td> <td style="text-align: right;">85.3%</td> <td style="text-align: right;">97.4%</td> <td style="text-align: right;">54.4M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="efficientnet_v2/#efficientnetv2l-function">EfficientNetV2L</a></td> <td style="text-align: right;">479</td> <td style="text-align: right;">85.7%</td> <td style="text-align: right;">97.5%</td> <td style="text-align: right;">119.0M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="convnext/#convnexttiny-function">ConvNeXtTiny</a></td> <td style="text-align: right;">109.42</td> <td style="text-align: right;">81.3%</td> <td style="text-align: right;">-</td> <td style="text-align: right;">28.6M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="convnext/#convnextsmall-function">ConvNeXtSmall</a></td> <td style="text-align: right;">192.29</td> <td style="text-align: right;">82.3%</td> <td style="text-align: right;">-</td> <td style="text-align: right;">50.2M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="convnext/#convnextbase-function">ConvNeXtBase</a></td> <td style="text-align: right;">338.58</td> <td style="text-align: right;">85.3%</td> <td style="text-align: right;">-</td> <td style="text-align: right;">88.5M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="convnext/#convnextlarge-function">ConvNeXtLarge</a></td> <td style="text-align: right;">755.07</td> <td style="text-align: right;">86.3%</td> <td style="text-align: right;">-</td> <td style="text-align: right;">197.7M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> <tr> <td><a href="convnext/#convnextxlarge-function">ConvNeXtXLarge</a></td> <td style="text-align: right;">1310</td> <td style="text-align: right;">86.7%</td> <td style="text-align: right;">-</td> <td style="text-align: right;">350.1M</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> <td style="text-align: right;">-</td> </tr> </tbody> </table> <p>The top-1 and top-5 accuracy refers to the model's performance on the ImageNet validation dataset.</p> <p>Depth refers to the topological depth of the network. This includes activation layers, batch normalization layers etc.</p> <p>Time per inference step is the average of 30 batches and 10 repetitions.</p> <ul> <li>CPU: AMD EPYC Processor (with IBPB) (92 core)</li> <li>RAM: 1.7T</li> <li>GPU: Tesla A100</li> <li>Batch size: 32</li> </ul> <p>Depth counts the number of layers with parameters.</p> <hr /> <h2 id="usage-examples-for-image-classification-models">Usage examples for image classification models</h2> <h3 id="classify-imagenet-classes-with-resnet50">Classify ImageNet classes with ResNet50</h3> <div class="codehilite"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">keras</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.resnet50</span><span class="w"> </span><span class="kn">import</span> <span class="n">ResNet50</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.resnet50</span><span class="w"> </span><span class="kn">import</span> <span class="n">preprocess_input</span><span class="p">,</span> <span class="n">decode_predictions</span> <span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> <span class="n">model</span> <span class="o">=</span> <span class="n">ResNet50</span><span class="p">(</span><span class="n">weights</span><span class="o">=</span><span class="s1">&#39;imagenet&#39;</span><span class="p">)</span> <span class="n">img_path</span> <span class="o">=</span> <span class="s1">&#39;elephant.jpg&#39;</span> <span class="n">img</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">load_img</span><span class="p">(</span><span class="n">img_path</span><span class="p">,</span> <span class="n">target_size</span><span class="o">=</span><span class="p">(</span><span class="mi">224</span><span class="p">,</span> <span class="mi">224</span><span class="p">))</span> <span class="n">x</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">img_to_array</span><span class="p">(</span><span class="n">img</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">preprocess_input</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">preds</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># decode the results into a list of tuples (class, description, probability)</span> <span class="c1"># (one such list for each sample in the batch)</span> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Predicted:&#39;</span><span class="p">,</span> <span class="n">decode_predictions</span><span class="p">(</span><span class="n">preds</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="mi">3</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="c1"># Predicted: [(u&#39;n02504013&#39;, u&#39;Indian_elephant&#39;, 0.82658225), (u&#39;n01871265&#39;, u&#39;tusker&#39;, 0.1122357), (u&#39;n02504458&#39;, u&#39;African_elephant&#39;, 0.061040461)]</span> </code></pre></div> <h3 id="extract-features-with-vgg16">Extract features with VGG16</h3> <div class="codehilite"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">keras</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.vgg16</span><span class="w"> </span><span class="kn">import</span> <span class="n">VGG16</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.vgg16</span><span class="w"> </span><span class="kn">import</span> <span class="n">preprocess_input</span> <span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> <span class="n">model</span> <span class="o">=</span> <span class="n">VGG16</span><span class="p">(</span><span class="n">weights</span><span class="o">=</span><span class="s1">&#39;imagenet&#39;</span><span class="p">,</span> <span class="n">include_top</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="n">img_path</span> <span class="o">=</span> <span class="s1">&#39;elephant.jpg&#39;</span> <span class="n">img</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">load_img</span><span class="p">(</span><span class="n">img_path</span><span class="p">,</span> <span class="n">target_size</span><span class="o">=</span><span class="p">(</span><span class="mi">224</span><span class="p">,</span> <span class="mi">224</span><span class="p">))</span> <span class="n">x</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">img_to_array</span><span class="p">(</span><span class="n">img</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">preprocess_input</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">features</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> </code></pre></div> <h3 id="extract-features-from-an-arbitrary-intermediate-layer-with-vgg19">Extract features from an arbitrary intermediate layer with VGG19</h3> <div class="codehilite"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.vgg19</span><span class="w"> </span><span class="kn">import</span> <span class="n">VGG19</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.vgg19</span><span class="w"> </span><span class="kn">import</span> <span class="n">preprocess_input</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.models</span><span class="w"> </span><span class="kn">import</span> <span class="n">Model</span> <span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> <span class="n">base_model</span> <span class="o">=</span> <span class="n">VGG19</span><span class="p">(</span><span class="n">weights</span><span class="o">=</span><span class="s1">&#39;imagenet&#39;</span><span class="p">)</span> <span class="n">model</span> <span class="o">=</span> <span class="n">Model</span><span class="p">(</span><span class="n">inputs</span><span class="o">=</span><span class="n">base_model</span><span class="o">.</span><span class="n">input</span><span class="p">,</span> <span class="n">outputs</span><span class="o">=</span><span class="n">base_model</span><span class="o">.</span><span class="n">get_layer</span><span class="p">(</span><span class="s1">&#39;block4_pool&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">output</span><span class="p">)</span> <span class="n">img_path</span> <span class="o">=</span> <span class="s1">&#39;elephant.jpg&#39;</span> <span class="n">img</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">load_img</span><span class="p">(</span><span class="n">img_path</span><span class="p">,</span> <span class="n">target_size</span><span class="o">=</span><span class="p">(</span><span class="mi">224</span><span class="p">,</span> <span class="mi">224</span><span class="p">))</span> <span class="n">x</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">img_to_array</span><span class="p">(</span><span class="n">img</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">preprocess_input</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">block4_pool_features</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> </code></pre></div> <h3 id="finetune-inceptionv3-on-a-new-set-of-classes">Fine-tune InceptionV3 on a new set of classes</h3> <div class="codehilite"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.inception_v3</span><span class="w"> </span><span class="kn">import</span> <span class="n">InceptionV3</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.models</span><span class="w"> </span><span class="kn">import</span> <span class="n">Model</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.layers</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dense</span><span class="p">,</span> <span class="n">GlobalAveragePooling2D</span> <span class="c1"># create the base pre-trained model</span> <span class="n">base_model</span> <span class="o">=</span> <span class="n">InceptionV3</span><span class="p">(</span><span class="n">weights</span><span class="o">=</span><span class="s1">&#39;imagenet&#39;</span><span class="p">,</span> <span class="n">include_top</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="c1"># add a global spatial average pooling layer</span> <span class="n">x</span> <span class="o">=</span> <span class="n">base_model</span><span class="o">.</span><span class="n">output</span> <span class="n">x</span> <span class="o">=</span> <span class="n">GlobalAveragePooling2D</span><span class="p">()(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># let&#39;s add a fully-connected layer</span> <span class="n">x</span> <span class="o">=</span> <span class="n">Dense</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">&#39;relu&#39;</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># and a logistic layer -- let&#39;s say we have 200 classes</span> <span class="n">predictions</span> <span class="o">=</span> <span class="n">Dense</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">&#39;softmax&#39;</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># this is the model we will train</span> <span class="n">model</span> <span class="o">=</span> <span class="n">Model</span><span class="p">(</span><span class="n">inputs</span><span class="o">=</span><span class="n">base_model</span><span class="o">.</span><span class="n">input</span><span class="p">,</span> <span class="n">outputs</span><span class="o">=</span><span class="n">predictions</span><span class="p">)</span> <span class="c1"># first: train only the top layers (which were randomly initialized)</span> <span class="c1"># i.e. freeze all convolutional InceptionV3 layers</span> <span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">base_model</span><span class="o">.</span><span class="n">layers</span><span class="p">:</span> <span class="n">layer</span><span class="o">.</span><span class="n">trainable</span> <span class="o">=</span> <span class="kc">False</span> <span class="c1"># compile the model (should be done *after* setting layers to non-trainable)</span> <span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">optimizer</span><span class="o">=</span><span class="s1">&#39;rmsprop&#39;</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">&#39;categorical_crossentropy&#39;</span><span class="p">)</span> <span class="c1"># train the model on the new data for a few epochs</span> <span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="o">...</span><span class="p">)</span> <span class="c1"># at this point, the top layers are well trained and we can start fine-tuning</span> <span class="c1"># convolutional layers from inception V3. We will freeze the bottom N layers</span> <span class="c1"># and train the remaining top layers.</span> <span class="c1"># let&#39;s visualize layer names and layer indices to see how many layers</span> <span class="c1"># we should freeze:</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">layer</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">base_model</span><span class="o">.</span><span class="n">layers</span><span class="p">):</span> <span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">layer</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="c1"># we chose to train the top 2 inception blocks, i.e. we will freeze</span> <span class="c1"># the first 249 layers and unfreeze the rest:</span> <span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">layers</span><span class="p">[:</span><span class="mi">249</span><span class="p">]:</span> <span class="n">layer</span><span class="o">.</span><span class="n">trainable</span> <span class="o">=</span> <span class="kc">False</span> <span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">layers</span><span class="p">[</span><span class="mi">249</span><span class="p">:]:</span> <span class="n">layer</span><span class="o">.</span><span class="n">trainable</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># we need to recompile the model for these modifications to take effect</span> <span class="c1"># we use SGD with a low learning rate</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.optimizers</span><span class="w"> </span><span class="kn">import</span> <span class="n">SGD</span> <span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">optimizer</span><span class="o">=</span><span class="n">SGD</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="mf">0.0001</span><span class="p">,</span> <span class="n">momentum</span><span class="o">=</span><span class="mf">0.9</span><span class="p">),</span> <span class="n">loss</span><span class="o">=</span><span class="s1">&#39;categorical_crossentropy&#39;</span><span class="p">)</span> <span class="c1"># we train our model again (this time fine-tuning the top 2 inception blocks</span> <span class="c1"># alongside the top Dense layers</span> <span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="o">...</span><span class="p">)</span> </code></pre></div> <h3 id="build-inceptionv3-over-a-custom-input-tensor">Build InceptionV3 over a custom input tensor</h3> <div class="codehilite"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">keras.applications.inception_v3</span><span class="w"> </span><span class="kn">import</span> <span class="n">InceptionV3</span> <span class="kn">from</span><span class="w"> </span><span class="nn">keras.layers</span><span class="w"> </span><span class="kn">import</span> <span class="n">Input</span> <span class="c1"># this could also be the output a different Keras model or layer</span> <span class="n">input_tensor</span> <span class="o">=</span> <span class="n">Input</span><span class="p">(</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">224</span><span class="p">,</span> <span class="mi">224</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> <span class="n">model</span> <span class="o">=</span> <span class="n">InceptionV3</span><span class="p">(</span><span class="n">input_tensor</span><span class="o">=</span><span class="n">input_tensor</span><span class="p">,</span> <span class="n">weights</span><span class="o">=</span><span class="s1">&#39;imagenet&#39;</span><span class="p">,</span> <span class="n">include_top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </code></pre></div> </div> <div class='k-outline'> <div class='k-outline-depth-1'> <a href='#keras-applications'>Keras Applications</a> </div> <div class='k-outline-depth-2'> <a href='#available-models'>Available models</a> </div> <div class='k-outline-depth-2'> <a href='#usage-examples-for-image-classification-models'>Usage examples for image classification models</a> </div> <div class='k-outline-depth-3'> <a href='#classify-imagenet-classes-with-resnet50'>Classify ImageNet classes with ResNet50</a> </div> <div class='k-outline-depth-3'> <a href='#extract-features-with-vgg16'>Extract features with VGG16</a> </div> <div class='k-outline-depth-3'> <a href='#extract-features-from-an-arbitrary-intermediate-layer-with-vgg19'>Extract features from an arbitrary intermediate layer with VGG19</a> </div> <div class='k-outline-depth-3'> <a href='#finetune-inceptionv3-on-a-new-set-of-classes'>Fine-tune InceptionV3 on a new set of classes</a> </div> <div class='k-outline-depth-3'> <a href='#build-inceptionv3-over-a-custom-input-tensor'>Build InceptionV3 over a custom input tensor</a> </div> </div> </div> </div> </div> </div> <footer> <div class="footer__container"> <a href="https://policies.google.com/terms">Terms</a> <div>|</div> <a href="https://policies.google.com/privacy">Privacy</a> </div> </footer> <script src="/js/index.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10