CINXE.COM
The TFX User Guide | TensorFlow
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="157101835696-ooapojlodmuabs2do2vuhhnf90bccmoi.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="TensorFlow"> <meta property="og:type" content="website"><meta name="theme-color" content="#ff6f00"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/tensorflow/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/images/favicon.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/images/apple-touch-icon-180x180.png"><link rel="canonical" href="https://www.tensorflow.org/tfx/guide"><link rel="search" type="application/opensearchdescription+xml" title="TensorFlow" href="https://www.tensorflow.org/s/opensearch.xml"> <title>The TFX User Guide | TensorFlow</title> <meta property="og:title" content="The TFX User Guide | TensorFlow"><meta property="og:url" content="https://www.tensorflow.org/tfx/guide"><meta property="og:image" content="https://www.tensorflow.org/static/site-assets/images/project-logos/tensorflow-extended-tfx-logo-social.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "The TFX User Guide" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "For Production", "item": "https://www.tensorflow.org/tfx" },{ "@type": "ListItem", "position": 2, "name": "The TFX User Guide", "item": "https://www.tensorflow.org/tfx/guide" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="tensorflow-theme" type="article" layout="docs" display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <a href="#main-content" class="skip-link button"> Skip to main content </a> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner" data-nosnippet> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="tensorFlow" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/images/lockup.svg" class="devsite-site-logo" alt="TensorFlow"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab > <a href="https://www.tensorflow.org/install" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/install" track-type="nav" track-metadata-position="nav - install" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Install" track-name="install" > Install </a> </tab> <tab class="devsite-dropdown devsite-active "> <a href="https://www.tensorflow.org/learn" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/learn" track-type="nav" track-metadata-position="nav - learn" track-metadata-module="primary nav" aria-label="Learn, selected" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" > Learn </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Learn" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/learn" track-metadata-position="nav - learn" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column tfo-menu-column-learn"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/learn" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/learn" track-metadata-position="nav - learn" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Introduction </div> <div class="devsite-nav-item-description"> New to TensorFlow? </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/tutorials" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/tutorials" track-metadata-position="nav - learn" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Tutorials </div> <div class="devsite-nav-item-description"> Learn how to use TensorFlow with end-to-end examples </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/guide" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/guide" track-metadata-position="nav - learn" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Guide </div> <div class="devsite-nav-item-description"> Learn framework concepts and components </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/resources/learn-ml" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/resources/learn-ml" track-metadata-position="nav - learn" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Learn ML </div> <div class="devsite-nav-item-description"> Educational resources to master your path with TensorFlow </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://www.tensorflow.org/api" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/api" track-type="nav" track-metadata-position="nav - api" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API" track-name="api" > API </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for API" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/api" track-metadata-position="nav - api" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API" track-name="api" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/api/stable" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/api/stable" track-metadata-position="nav - api" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> TensorFlow (v2.16.1) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/versions" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/versions" track-metadata-position="nav - api" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Versions… </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://js.tensorflow.org/api/latest/" track-type="nav" track-metadata-eventdetail="https://js.tensorflow.org/api/latest/" track-metadata-position="nav - api" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> TensorFlow.js </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/lite/api_docs" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/lite/api_docs" track-metadata-position="nav - api" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> TensorFlow Lite </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/tfx/api_docs" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/tfx/api_docs" track-metadata-position="nav - api" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> TFX </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://www.tensorflow.org/resources/models-datasets" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/resources/models-datasets" track-type="nav" track-metadata-position="nav - ecosystem" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Ecosystem" track-name="ecosystem" > Ecosystem </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Ecosystem" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/resources/models-datasets" track-metadata-position="nav - ecosystem" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Ecosystem" track-name="ecosystem" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>LIBRARIES</li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/js" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/js" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> TensorFlow.js </div> <div class="devsite-nav-item-description"> Develop web ML applications in JavaScript </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/lite" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/lite" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> TensorFlow Lite </div> <div class="devsite-nav-item-description"> Deploy ML on mobile, microcontrollers and other edge devices </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/tfx" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/tfx" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> TFX </div> <div class="devsite-nav-item-description"> Build production ML pipelines </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/resources/libraries-extensions" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/resources/libraries-extensions" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> All libraries </div> <div class="devsite-nav-item-description"> Create advanced models and extend TensorFlow </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>RESOURCES</li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/resources/models-datasets" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/resources/models-datasets" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="resources" tooltip > <div class="devsite-nav-item-title"> Models & datasets </div> <div class="devsite-nav-item-description"> Pre-trained models and datasets built by Google and the community </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/resources/tools" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/resources/tools" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="resources" tooltip > <div class="devsite-nav-item-title"> Tools </div> <div class="devsite-nav-item-description"> Tools to support and accelerate TensorFlow workflows </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/responsible_ai" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/responsible_ai" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="resources" tooltip > <div class="devsite-nav-item-title"> Responsible AI </div> <div class="devsite-nav-item-description"> Resources for every stage of the ML workflow </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/resources/recommendation-systems" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/resources/recommendation-systems" track-metadata-position="nav - ecosystem" track-metadata-module="tertiary nav" track-metadata-module_headline="resources" tooltip > <div class="devsite-nav-item-title"> Recommendation systems </div> <div class="devsite-nav-item-description"> Build recommendation systems with open source tools </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://www.tensorflow.org/community" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/community" track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Community" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/community" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/community/groups" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/community/groups" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Groups </div> <div class="devsite-nav-item-description"> User groups, interest groups and mailing lists </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/community/contribute" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/community/contribute" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Contribute </div> <div class="devsite-nav-item-description"> Guide for contributing to code and documentation </div> </a> </li> <li class="devsite-nav-item"> <a href="https://blog.tensorflow.org/" track-type="nav" track-metadata-eventdetail="https://blog.tensorflow.org/" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Blog </div> <div class="devsite-nav-item-description"> Stay up to date with all things TensorFlow </div> </a> </li> <li class="devsite-nav-item"> <a href="https://discuss.tensorflow.org" track-type="nav" track-metadata-eventdetail="https://discuss.tensorflow.org" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Forum </div> <div class="devsite-nav-item-description"> Discussion platform for the TensorFlow community </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://www.tensorflow.org/about" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/about" track-type="nav" track-metadata-position="nav - why tensorflow" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Why TensorFlow" track-name="why tensorflow" > Why TensorFlow </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Why TensorFlow" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/about" track-metadata-position="nav - why tensorflow" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Why TensorFlow" track-name="why tensorflow" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/about" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/about" track-metadata-position="nav - why tensorflow" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> About </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.tensorflow.org/about/case-studies" track-type="nav" track-metadata-eventdetail="https://www.tensorflow.org/about/case-studies" track-metadata-position="nav - why tensorflow" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Case studies </div> </a> </li> </ul> </div> </div> </div> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="TFX" tenant-name="TensorFlow" > <form class="devsite-search-form" action="https://www.tensorflow.org/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event " href="//github.com/tensorflow" data-category="Site-Wide Custom Events" data-label="Site header link: GitHub" > GitHub </a> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://www.tensorflow.org/tfx" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="TFX" > For Production </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://www.tensorflow.org/tfx" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/tfx" track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab > <a href="https://www.tensorflow.org/tfx/tutorials" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/tfx/tutorials" track-type="nav" track-metadata-position="nav - tutorials" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Tutorials" track-name="tutorials" > Tutorials </a> </tab> <tab class="devsite-active"> <a href="https://www.tensorflow.org/tfx/guide" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/tfx/guide" track-type="nav" track-metadata-position="nav - guide" track-metadata-module="primary nav" aria-label="Guide, selected" data-category="Site-Wide Custom Events" data-label="Tab: Guide" track-name="guide" > Guide </a> </tab> <tab > <a href="https://www.tensorflow.org/tfx/addons" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/tfx/addons" track-type="nav" track-metadata-position="nav - tfx-addons" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: TFX-Addons" track-name="tfx-addons" > TFX-Addons </a> </tab> <tab > <a href="https://www.tensorflow.org/tfx/api_overview" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://www.tensorflow.org/tfx/api_overview" track-type="nav" track-metadata-position="nav - api" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: API" track-name="api" > API </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="tensorFlow" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/images/lockup.svg" class="devsite-site-logo" alt="TensorFlow"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/install" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Install" track-name="install" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Install" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Install </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/learn" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" > <span class="devsite-nav-text" tooltip menu="Learn"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Learn"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/tfx" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/tfx/tutorials" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Tutorials" track-name="tutorials" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tutorials" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tutorials </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/tfx/guide" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Guide" track-name="guide" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Guide" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> Guide </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/tfx/addons" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: TFX-Addons" track-name="tfx-addons" data-category="Site-Wide Custom Events" data-label="Responsive Tab: TFX-Addons" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TFX-Addons </span> </a> </li> <li class="devsite-nav-item"> <a href="/tfx/api_overview" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: API" track-name="api" data-category="Site-Wide Custom Events" data-label="Responsive Tab: API" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/api" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: API" track-name="api" data-category="Site-Wide Custom Events" data-label="Responsive Tab: API" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: API" track-name="api" > <span class="devsite-nav-text" tooltip menu="API"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="API"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/resources/models-datasets" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Ecosystem" track-name="ecosystem" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Ecosystem" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Ecosystem </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Ecosystem" track-name="ecosystem" > <span class="devsite-nav-text" tooltip menu="Ecosystem"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Ecosystem"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > <span class="devsite-nav-text" tooltip menu="Community"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Community"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Why TensorFlow" track-name="why tensorflow" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Why TensorFlow" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Why TensorFlow </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Why TensorFlow" track-name="why tensorflow" > <span class="devsite-nav-text" tooltip menu="Why TensorFlow"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Why TensorFlow"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="//github.com/tensorflow" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: GitHub" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > GitHub </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/tfx/guide" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide" ><span class="devsite-nav-text" tooltip>Guide</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>What's New</span> </div></li> <li class="devsite-nav-item"><a href="/tfx/addons" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/addons" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/addons" ><span class="devsite-nav-text" tooltip>TFX-Addons</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/solutions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/solutions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/solutions" ><span class="devsite-nav-text" tooltip>TFX Cloud Solutions</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/keras" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/keras" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/keras" ><span class="devsite-nav-text" tooltip>Using Keras with TFX</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/non_tf" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/non_tf" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/non_tf" ><span class="devsite-nav-text" tooltip>Using Non-TensorFlow Frameworks in TFX</span></a></li> <li class="devsite-nav-item"><a href="/tfx/tutorials/tfx/tfx_for_mobile" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/tutorials/tfx/tfx_for_mobile" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/tutorials/tfx/tfx_for_mobile" ><span class="devsite-nav-text" tooltip>Mobile & IoT: TFX for TensorFlow Lite</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>TFX Pipelines</span> </div></li> <li class="devsite-nav-item"><a href="/tfx/guide/understanding_tfx_pipelines" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/understanding_tfx_pipelines" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/understanding_tfx_pipelines" ><span class="devsite-nav-text" tooltip>Understanding TFX pipelines</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/build_tfx_pipeline" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/build_tfx_pipeline" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/build_tfx_pipeline" ><span class="devsite-nav-text" tooltip>Building a TFX pipeline</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/build_local_pipeline" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/build_local_pipeline" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/build_local_pipeline" ><span class="devsite-nav-text" tooltip>Local Pipelines</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>TFX Standard Components</span> </div></li> <li class="devsite-nav-item"><a href="/tfx/guide/examplegen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/examplegen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/examplegen" ><span class="devsite-nav-text" tooltip>ExampleGen</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/statsgen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/statsgen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/statsgen" ><span class="devsite-nav-text" tooltip>StatisticsGen</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/schemagen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/schemagen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/schemagen" ><span class="devsite-nav-text" tooltip>SchemaGen</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/exampleval" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/exampleval" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/exampleval" ><span class="devsite-nav-text" tooltip>ExampleValidator</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/transform" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/transform" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/transform" ><span class="devsite-nav-text" tooltip>Transform</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/trainer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/trainer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/trainer" ><span class="devsite-nav-text" tooltip>Trainer</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/tuner" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/tuner" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/tuner" ><span class="devsite-nav-text" tooltip>Tuner</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/evaluator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/evaluator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/evaluator" ><span class="devsite-nav-text" tooltip>Evaluator</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/infra_validator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/infra_validator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/infra_validator" ><span class="devsite-nav-text" tooltip>InfraValidator</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/pusher" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/pusher" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/pusher" ><span class="devsite-nav-text" tooltip>Pusher</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/bulkinferrer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/bulkinferrer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/bulkinferrer" ><span class="devsite-nav-text" tooltip>BulkInferrer</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>TFX Custom Components</span> </div></li> <li class="devsite-nav-item"><a href="/tfx/guide/understanding_custom_components" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/understanding_custom_components" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/understanding_custom_components" ><span class="devsite-nav-text" tooltip>Understanding custom components</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/custom_function_component" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/custom_function_component" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/custom_function_component" ><span class="devsite-nav-text" tooltip>Python function-based components</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/container_component" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/container_component" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/container_component" ><span class="devsite-nav-text" tooltip>Container-based components</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/custom_component" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/custom_component" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/custom_component" ><span class="devsite-nav-text" tooltip>Fully custom components</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Orchestrators</span> </div></li> <li class="devsite-nav-item"><a href="/tfx/guide/local_orchestrator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/local_orchestrator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/local_orchestrator" ><span class="devsite-nav-text" tooltip>Local orchestrator</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/vertex" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/vertex" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/vertex" ><span class="devsite-nav-text" tooltip>Vertex AI Pipelines</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/airflow" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/airflow" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/airflow" ><span class="devsite-nav-text" tooltip>Apache Airflow</span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/kubeflow" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/kubeflow" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/kubeflow" ><span class="devsite-nav-text" tooltip>Kubeflow Pipelines</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>TFX CLI</span> </div></li> <li class="devsite-nav-item"><a href="/tfx/guide/cli" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/cli" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/cli" ><span class="devsite-nav-text" tooltip>Using the TFX CLI</span></a></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Libraries</span> </div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Data Validation</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/tfx/guide/tfdv" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/tfdv" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/tfdv" ><span class="devsite-nav-text" tooltip>Check and analyze data</span></a></li><li class="devsite-nav-item"><a href="/tfx/data_validation/install" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/data_validation/install" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/data_validation/install" ><span class="devsite-nav-text" tooltip>Install</span></a></li><li class="devsite-nav-item"><a href="/tfx/data_validation/get_started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/data_validation/get_started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/data_validation/get_started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Transform</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/tfx/guide/tft" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/tft" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/tft" ><span class="devsite-nav-text" tooltip>Preprocess and transform data</span></a></li><li class="devsite-nav-item"><a href="/tfx/transform/install" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/transform/install" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/transform/install" ><span class="devsite-nav-text" tooltip>Install</span></a></li><li class="devsite-nav-item"><a href="/tfx/transform/get_started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/transform/get_started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/transform/get_started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/tfx/transform/tf2_support" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/transform/tf2_support" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/transform/tf2_support" ><span class="devsite-nav-text" tooltip>Using tf.Transform with TensorFlow 2.x</span></a></li><li class="devsite-nav-item"><a href="/tfx/transform/common_transformations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/transform/common_transformations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/transform/common_transformations" ><span class="devsite-nav-text" tooltip>Common transformations</span></a></li><li class="devsite-nav-item"><a href="/tfx/guide/tft_bestpractices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/tft_bestpractices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/tft_bestpractices" ><span class="devsite-nav-text" tooltip>Data preprocessing best practices</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Modeling</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/tfx/guide/train" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/train" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/train" ><span class="devsite-nav-text" tooltip>Design modeling code</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Model Analysis</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/tfx/guide/tfma" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/tfma" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/tfma" ><span class="devsite-nav-text" tooltip>Improving Model Quality</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/install" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/install" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/install" ><span class="devsite-nav-text" tooltip>Install</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/get_started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/get_started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/get_started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/setup" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/setup" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/setup" ><span class="devsite-nav-text" tooltip>Setup</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/metrics" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/metrics" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/metrics" ><span class="devsite-nav-text" tooltip>Metrics and Plots</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/visualizations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/visualizations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/visualizations" ><span class="devsite-nav-text" tooltip>Visualizations</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/model_validations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/model_validations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/model_validations" ><span class="devsite-nav-text" tooltip>Model Validations</span></a></li><li class="devsite-nav-item"><a href="/tfx/guide/fairness_indicators" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/fairness_indicators" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/fairness_indicators" ><span class="devsite-nav-text" tooltip>Using Fairness Indicators</span></a></li><li class="devsite-nav-item"><a href="/responsible_ai/fairness_indicators/tutorials/Fairness_Indicators_Pandas_Case_Study" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /responsible_ai/fairness_indicators/tutorials/Fairness_Indicators_Pandas_Case_Study" track-type="bookNav" track-name="click" track-metadata-eventdetail="/responsible_ai/fairness_indicators/tutorials/Fairness_Indicators_Pandas_Case_Study" ><span class="devsite-nav-text" tooltip>Using Fairness Indicators with Pandas DataFrames</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/architecture" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/architecture" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/architecture" ><span class="devsite-nav-text" tooltip>Architecture</span></a></li><li class="devsite-nav-item"><a href="/tfx/model_analysis/faq" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/model_analysis/faq" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/model_analysis/faq" ><span class="devsite-nav-text" tooltip>FAQ</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Serving</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/tfx/guide/serving" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/serving" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/serving" ><span class="devsite-nav-text" tooltip>Serving models</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/docker" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/docker" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/docker" ><span class="devsite-nav-text" tooltip>TensorFlow Serving with Docker</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/setup" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/setup" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/setup" ><span class="devsite-nav-text" tooltip>Installation</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/serving_basic" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/serving_basic" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/serving_basic" ><span class="devsite-nav-text" tooltip>Serve a TensorFlow model</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/architecture" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/architecture" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/architecture" ><span class="devsite-nav-text" tooltip>Architecture</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/serving_config" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/serving_config" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/serving_config" ><span class="devsite-nav-text" tooltip>Advanced model server configuration</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/serving_advanced" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/serving_advanced" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/serving_advanced" ><span class="devsite-nav-text" tooltip>Build a TensorFlow ModelServer</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/serving_kubernetes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/serving_kubernetes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/serving_kubernetes" ><span class="devsite-nav-text" tooltip>Use TensorFlow Serving with Kubernetes</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/custom_servable" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/custom_servable" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/custom_servable" ><span class="devsite-nav-text" tooltip>Create a new kind of servable</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/custom_source" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/custom_source" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/custom_source" ><span class="devsite-nav-text" tooltip>Create a module that discovers new servable paths</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/custom_op" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/custom_op" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/custom_op" ><span class="devsite-nav-text" tooltip>Serving TensorFlow models with custom ops</span></a></li><li class="devsite-nav-item"><a href="/tfx/serving/signature_defs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/serving/signature_defs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/serving/signature_defs" ><span class="devsite-nav-text" tooltip>SignatureDefs in SavedModel for TensorFlow Serving</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Related projects</span> </div></li> <li class="devsite-nav-item devsite-nav-external"><a href="https://beam.apache.org/" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://beam.apache.org/" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://beam.apache.org/" ><span class="devsite-nav-text" tooltip>Apache Beam</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li> <li class="devsite-nav-item devsite-nav-external"><a href="https://cloud.google.com/dataflow/docs/machine-learning/ml-preprocess-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://cloud.google.com/dataflow/docs/machine-learning/ml-preprocess-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://cloud.google.com/dataflow/docs/machine-learning/ml-preprocess-data" ><span class="devsite-nav-text" tooltip>MLTransform</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li> <li class="devsite-nav-item"><a href="/tfx/guide/mlmd" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tfx/guide/mlmd" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tfx/guide/mlmd" ><span class="devsite-nav-text" tooltip>ML Metadata</span></a></li> <li class="devsite-nav-item"><a href="/tensorboard" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tensorboard" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tensorboard" ><span class="devsite-nav-text" tooltip>TensorBoard</span></a></li> </ul> <ul class="devsite-nav-list" menu="Learn" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/learn" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Introduction" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Introduction </span> </a> </li> <li class="devsite-nav-item"> <a href="/tutorials" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tutorials" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tutorials </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Guide" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Guide </span> </a> </li> <li class="devsite-nav-item"> <a href="/resources/learn-ml" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn ML" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn ML </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="API" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/api/stable" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow (v2.16.1)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TensorFlow (v2.16.1) </span> </a> </li> <li class="devsite-nav-item"> <a href="/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Versions…" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Versions… </span> </a> </li> <li class="devsite-nav-item"> <a href="https://js.tensorflow.org/api/latest/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow.js" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TensorFlow.js </span> </a> </li> <li class="devsite-nav-item"> <a href="/lite/api_docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow Lite" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TensorFlow Lite </span> </a> </li> <li class="devsite-nav-item"> <a href="/tfx/api_docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TFX" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TFX </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Ecosystem" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > LIBRARIES </span> </span> </li> <li class="devsite-nav-item"> <a href="/js" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow.js" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TensorFlow.js </span> </a> </li> <li class="devsite-nav-item"> <a href="/lite" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow Lite" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TensorFlow Lite </span> </a> </li> <li class="devsite-nav-item"> <a href="/tfx" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TFX" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > TFX </span> </a> </li> <li class="devsite-nav-item"> <a href="/resources/libraries-extensions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: All libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > All libraries </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > RESOURCES </span> </span> </li> <li class="devsite-nav-item"> <a href="/resources/models-datasets" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Models & datasets" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Models & datasets </span> </a> </li> <li class="devsite-nav-item"> <a href="/resources/tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tools" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tools </span> </a> </li> <li class="devsite-nav-item"> <a href="/responsible_ai" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Responsible AI" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Responsible AI </span> </a> </li> <li class="devsite-nav-item"> <a href="/resources/recommendation-systems" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Recommendation systems" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Recommendation systems </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Community" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/community/groups" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Groups" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Groups </span> </a> </li> <li class="devsite-nav-item"> <a href="/community/contribute" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Contribute" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Contribute </span> </a> </li> <li class="devsite-nav-item"> <a href="https://blog.tensorflow.org/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Blog" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Blog </span> </a> </li> <li class="devsite-nav-item"> <a href="https://discuss.tensorflow.org" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Forum" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Forum </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Why TensorFlow" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: About" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > About </span> </a> </li> <li class="devsite-nav-item"> <a href="/about/case-studies" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Case studies" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Case studies </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" id="main-content" class="devsite-main-content" has-book-nav has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /site-assets/css/style.css */ /* override theme */ table img { max-width: 100%; } /* .devsite-terminal virtualenv prompt */ .tfo-terminal-venv::before { content: "(venv) $ " !important; } /* .devsite-terminal root prompt */ .tfo-terminal-root::before { content: "# " !important; } /* Used in links for type annotations in function/method signatures */ .tfo-signature-link a, .tfo-signature-link a:visited, .tfo-signature-link a:hover, .tfo-signature-link a:focus, .tfo-signature-link a:hover *, .tfo-signature-link a:focus * { text-decoration: none !important; } .tfo-signature-link a, .tfo-signature-link a:visited { border-bottom: 1px dotted #1a73e8; } .tfo-signature-link a:focus { border-bottom-style: solid; } /* .devsite-terminal Windows prompt */ .tfo-terminal-windows::before { content: "C:\\> " !important; } /* .devsite-terminal Windows prompt w/ virtualenv */ .tfo-terminal-windows-venv::before { content: "(venv) C:\\> " !important; } .tfo-diff-green-one-level + * { background: rgba(175, 245, 162, .6) !important; } .tfo-diff-green + * > * { background: rgba(175, 245, 162, .6) !important; } .tfo-diff-green-list + ul > li:first-of-type { background: rgba(175, 245, 162, .6) !important; } .tfo-diff-red-one-level + * { background: rgba(255, 230, 230, .6) !important; text-decoration: line-through !important; } .tfo-diff-red + * > * { background: rgba(255, 230, 230, .6) !important; text-decoration: line-through !important; } .tfo-diff-red-list + ul > li:first-of-type { background: rgba(255, 230, 230, .6) !important; text-decoration: line-through !important; } devsite-code .tfo-notebook-code-cell-output { max-height: 300px; overflow: auto; background: rgba(255, 247, 237, 1); /* orange bg to distinguish from input code cells */ } devsite-code .tfo-notebook-code-cell-output + .devsite-code-buttons-container button { background: rgba(255, 247, 237, .7); /* orange bg to distinguish from input code cells */ } devsite-code[dark-code] .tfo-notebook-code-cell-output { background: rgba(64, 78, 103, 1); /* medium slate */ } devsite-code[dark-code] .tfo-notebook-code-cell-output + .devsite-code-buttons-container button { background: rgba(64, 78, 103, .7); /* medium slate */ } /* override default table styles for notebook buttons */ .devsite-table-wrapper .tfo-notebook-buttons { display: inline-block; margin-left: 3px; width: auto; } .tfo-notebook-buttons td { padding-left: 0; padding-right: 20px; } .tfo-notebook-buttons a, .tfo-notebook-buttons :link, .tfo-notebook-buttons :visited { border-radius: 8px; box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 1px 3px 1px rgba(60, 64, 67, .15); color: #202124; padding: 12px 17px; transition: box-shadow 0.2s; } .tfo-notebook-buttons a:hover, .tfo-notebook-buttons a:focus { box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 2px 6px 2px rgba(60, 64, 67, .15); } .tfo-notebook-buttons tr { background: 0; border: 0; } /* on rendered notebook page, remove link to webpage since we're already here */ .tfo-notebook-buttons:not(.tfo-api) td:first-child { display: none; } .tfo-notebook-buttons td > a { -webkit-box-align: center; -ms-flex-align: center; align-items: center; display: -webkit-box; display: -ms-flexbox; display: flex; } .tfo-notebook-buttons td > a > img { margin-right: 8px; } /* landing pages */ .tfo-landing-row-item-inset-white { background-color: #fff; padding: 32px; } .tfo-landing-row-item-inset-white ol, .tfo-landing-row-item-inset-white ul { padding-left: 20px; } /* colab callout button */ .colab-callout-row devsite-code { border-radius: 8px 8px 0 0; box-shadow: none; } .colab-callout-footer { background: #e3e4e7; border-radius: 0 0 8px 8px; color: #37474f; padding: 20px; } .colab-callout-row devsite-code[dark-code] + .colab-callout-footer { background: #3f4f66; } .colab-callout-footer > .button { margin-top: 4px; color: #ff5c00; } .colab-callout-footer > a > span { vertical-align: middle; color: #37474f; padding-left: 10px; font-size: 14px; } .colab-callout-row devsite-code[dark-code] + .colab-callout-footer > a > span { color: #fff; } a.colab-button { background: rgba(255, 255, 255, .75); border: solid 1px rgba(0, 0, 0, .08); border-bottom-color: rgba(0, 0, 0, .15); border-radius: 4px; color: #aaa; display: inline-block; font-size: 11px !important; font-weight: 300; line-height: 16px; padding: 4px 8px; text-decoration: none; text-transform: uppercase; } a.colab-button:hover { background: white; border-color: rgba(0, 0, 0, .2); color: #666; } a.colab-button span { background: url(/images/colab_logo_button.svg) no-repeat 1px 1px / 20px; border-radius: 4px; display: inline-block; padding-left: 24px; text-decoration: none; } @media screen and (max-width: 600px) { .tfo-notebook-buttons td { display: block; } } /* guide and tutorials landing page cards and sections */ .tfo-landing-page-card { padding: 16px; box-shadow: 0 0 36px rgba(0,0,0,0.1); border-radius: 10px; } /* Page section headings */ .tfo-landing-page-heading h2, h2.tfo-landing-page-heading { font-family: "Google Sans", sans-serif; color: #425066; font-size: 30px; font-weight: 700; line-height: 40px; } /* Item title headings */ .tfo-landing-page-heading h3, h3.tfo-landing-page-heading, .tfo-landing-page-card h3, h3.tfo-landing-page-card { font-family: "Google Sans", sans-serif; color: #425066; font-size: 20px; font-weight: 500; line-height: 26px; } /* List of tutorials notebooks for subsites */ .tfo-landing-page-resources-ul { padding-left: 15px } .tfo-landing-page-resources-ul > li { margin: 6px 0; } /* Temporary fix to hide product description in header on landing pages */ devsite-header .devsite-product-description { display: none; } </style> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://www.tensorflow.org/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="TensorFlow" > TensorFlow </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://www.tensorflow.org/learn" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Learn </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://www.tensorflow.org/tfx" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="TFX" > For Production </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://www.tensorflow.org/tfx/guide" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > Guide </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <h1 class="devsite-page-title" tabindex="-1"> The TFX User Guide <div class="devsite-actions" data-nosnippet><devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip></div> </h1> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <p></p> <!-- DO NOT EDIT! Automatically generated file. --> <h2 id="introduction" data-text="Introduction" tabindex="-1">Introduction</h2> <p>TFX is a Google-production-scale machine learning (ML) platform based on TensorFlow. It provides a configuration framework and shared libraries to integrate common components needed to define, launch, and monitor your machine learning system.</p> <h2 id="tfx_10" data-text="TFX 1.0" tabindex="-1">TFX 1.0</h2> <p>We are happy to announce the availability of the <a href="https://github.com/tensorflow/tfx/releases">TFX 1.0.0</a>. This is the initial post-beta release of TFX, which provides stable public APIs and artifacts. You can be assured that your future TFX pipelines will keep working after an upgrade within the compatibility scope defined in this <a href="https://github.com/tensorflow/community/blob/master/rfcs/20210307-tfx-api-artifact-compat.md">RFC</a>.</p> <h2 id="installation" data-text="Installation" tabindex="-1">Installation</h2> <p><a href="/tfx/guide/a%20href=%22https:/github.com/tensorflow/tfx%22%3Ehttps:/github.com/tensorflow/tfx%3C/a"><img src="https://img.shields.io/pypi/pyversions/tfx.svg?style=plastic" alt="Python"></a> <a href="/tfx/guide/a%20href=%22https:/badge.fury.io/py/tfx%22%3Ehttps:/badge.fury.io/py/tfx%3C/a"><img src="https://badge.fury.io/py/tfx.svg" alt="PyPI"></a></p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Bash"><code translate="no" dir="ltr">pip<span class="devsite-syntax-w"> </span>install<span class="devsite-syntax-w"> </span>tfx </code></pre></devsite-code><aside class="note"><strong>Note:</strong><span> See the <a href="https://www.tensorflow.org/tfx/guide/serving">TensorFlow Serving</a>, <a href="https://js.tensorflow.org/">TensorFlow JS</a>, and/or <a href="https://www.tensorflow.org/lite">TensorFlow Lite</a> documentation for installing those optional components.</span></aside><aside class="note"><strong>Note:</strong><span> This installs <a href="/tfx/guide/beam">Apache Beam</a> with the DirectRunner. You can also separately install runners that perform distributed computation, such as <a href="https://flink.apache.org/">Apache Flink</a> or <a href="https://spark.apache.org/">Apache Spark</a>.</span></aside> <h3 id="nightly_packages" data-text="Nightly Packages" tabindex="-1">Nightly Packages</h3> <p>TFX also hosts nightly packages at <a href="https://pypi-nightly.tensorflow.org">https://pypi-nightly.tensorflow.org</a> on Google Cloud. To install the latest nightly package, please use the following command:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Carbon"><code translate="no" dir="ltr"><span class="devsite-syntax-nx">pip</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nx">install</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">--</span><span class="devsite-syntax-nx">extra</span><span class="devsite-syntax-o">-</span><span class="devsite-syntax-nx">index</span><span class="devsite-syntax-o">-</span><span class="devsite-syntax-nx">url</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nx">https</span><span class="devsite-syntax-p">:</span><span class="devsite-syntax-c1">//pypi-nightly.tensorflow.org/simple --pre tfx</span> </code></pre></devsite-code> <p>This will install the nightly packages for the major dependencies of TFX such as TensorFlow Model Analysis (TFMA), TensorFlow Data Validation (TFDV), TensorFlow Transform (TFT), TFX Basic Shared Libraries (TFX-BSL), ML Metadata (MLMD).</p> <aside class="note"><strong>Note:</strong><span> These nightly packages are unstable and breakages are likely to happen. The fix could often take a week or more depending on the complexity involved.</span></aside> <h2 id="about_tfx" data-text="About TFX" tabindex="-1">About TFX</h2> <p>TFX is a platform for building and managing ML workflows in a production environment. TFX provides the following:</p> <ul> <li><p>A toolkit for building ML pipelines. TFX pipelines let you orchestrate your ML workflow on several platforms, such as: Apache Airflow, Apache Beam, and Kubeflow Pipelines.</p> <p><a href="https://www.tensorflow.org/tfx/guide/understanding_tfx_pipelines">Learn more about TFX pipelines</a>.</p></li> <li><p>A set of standard components that you can use as a part of a pipeline, or as a part of your ML training script. TFX standard components provide proven functionality to help you get started building an ML process easily.</p> <p><a href="#tfx_standard_components">Learn more about TFX standard components</a>.</p></li> <li><p>Libraries which provide the base functionality for many of the standard components. You can use the TFX libraries to add this functionality to your own custom components, or use them separately.</p> <p><a href="#tfx_libraries">Learn more about the TFX libraries</a>.</p></li> </ul> <p>TFX is a Google-production-scale machine learning toolkit based on TensorFlow. It provides a configuration framework and shared libraries to integrate common components needed to define, launch, and monitor your machine learning system.</p> <h2 id="tfx_standard_components" data-text="TFX Standard Components" tabindex="-1">TFX Standard Components</h2> <p>A TFX pipeline is a sequence of components that implement an <a href="https://en.wikipedia.org/wiki/Pipeline_(computing)">ML pipeline</a> which is specifically designed for scalable, high-performance machine learning tasks. That includes modeling, training, serving inference, and managing deployments to online, native mobile, and JavaScript targets.</p> <p>A TFX pipeline typically includes the following components:</p> <ul> <li><p><a href="/tfx/guide/examplegen"><strong>ExampleGen</strong></a> is the initial input component of a pipeline that ingests and optionally splits the input dataset.</p></li> <li><p><a href="/tfx/guide/statsgen"><strong>StatisticsGen</strong></a> calculates statistics for the dataset.</p></li> <li><p><a href="/tfx/guide/schemagen"><strong>SchemaGen</strong></a> examines the statistics and creates a data schema.</p></li> <li><p><a href="/tfx/guide/exampleval"><strong>ExampleValidator</strong></a> looks for anomalies and missing values in the dataset.</p></li> <li><p><a href="/tfx/guide/transform"><strong>Transform</strong></a> performs feature engineering on the dataset.</p></li> <li><p><a href="/tfx/guide/trainer"><strong>Trainer</strong></a> trains the model.</p></li> <li><p><a href="/tfx/guide/tuner"><strong>Tuner</strong></a> tunes the hyperparameters of the model.</p></li> <li><p><a href="/tfx/guide/evaluator"><strong>Evaluator</strong></a> performs deep analysis of the training results and helps you validate your exported models, ensuring that they are "good enough" to be pushed to production.</p></li> <li><p><a href="/tfx/guide/infra_validator"><strong>InfraValidator</strong></a> checks the model is actually servable from the infrastructure, and prevents bad model from being pushed.</p></li> <li><p><a href="/tfx/guide/pusher"><strong>Pusher</strong></a> deploys the model on a serving infrastructure.</p></li> <li><p><a href="/tfx/guide/bulkinferrer"><strong>BulkInferrer</strong></a> performs batch processing on a model with unlabelled inference requests.</p></li> </ul> <p>This diagram illustrates the flow of data between these components:</p> <p><img src="/static/tfx/guide/images/prog_fin.png" alt="Component Flow"></p> <h2 id="tfx_libraries" data-text="TFX Libraries" tabindex="-1">TFX Libraries</h2> <p>TFX includes both libraries and pipeline components. This diagram illustrates the relationships between TFX libraries and pipeline components:</p> <p><img src="/static/tfx/guide/images/libraries_components.png" alt="Libraries and Components"></p> <p>TFX provides several Python packages that are the libraries which are used to create pipeline components. You'll use these libraries to create the components of your pipelines so that your code can focus on the unique aspects of your pipeline.</p> <p>TFX libraries include:</p> <ul> <li><p><a href="/tfx/guide/tfdv"><strong>TensorFlow Data Validation (TFDV)</strong></a> is a library for analyzing and validating machine learning data. It is designed to be highly scalable and to work well with TensorFlow and TFX. TFDV includes:</p> <ul> <li>Scalable calculation of summary statistics of training and test data.</li> <li>Integration with a viewer for data distributions and statistics, as well as faceted comparison of pairs of datasets (Facets).</li> <li>Automated data-schema generation to describe expectations about data like required values, ranges, and vocabularies.</li> <li>A schema viewer to help you inspect the schema.</li> <li>Anomaly detection to identify anomalies, such as missing features, out-of- range values, or wrong feature types, to name a few.</li> <li>An anomalies viewer so that you can see what features have anomalies and learn more in order to correct them.</li> </ul></li> <li><p><a href="/tfx/guide/tft"><strong>TensorFlow Transform (TFT)</strong></a> is a library for preprocessing data with TensorFlow. TensorFlow Transform is useful for data that requires a full- pass, such as:</p> <ul> <li>Normalize an input value by mean and standard deviation.</li> <li>Convert strings to integers by generating a vocabulary over all input values.</li> <li>Convert floats to integers by assigning them to buckets based on the observed data distribution.</li> </ul></li> <li><p><a href="/tfx/guide/train"><strong>TensorFlow</strong></a> is used for training models with TFX. It ingests training data and modeling code and creates a SavedModel result. It also integrates a feature engineering pipeline created by TensorFlow Transform for preprocessing input data.</p> <p><a href="https://www.tensorflow.org/tutorials/keras/keras_tuner">KerasTuner</a> is used for tuning hyperparameters for model.</p> <aside class="note"><strong>Note:</strong><span> TFX supports TensorFlow 1.15 and, with some exceptions, 2.x. For details, see <a href="/tfx/guide/train">Designing TensorFlow Modeling Code For TFX</a>.</span></aside></li> <li><p><a href="/tfx/guide/tfma"><strong>TensorFlow Model Analysis (TFMA)</strong></a> is a library for evaluating TensorFlow models. It is used along with TensorFlow to create an EvalSavedModel, which becomes the basis for its analysis. It allows users to evaluate their models on large amounts of data in a distributed manner, using the same metrics defined in their trainer. These metrics can be computed over different slices of data and visualized in Jupyter notebooks.</p></li> <li><p><a href="https://github.com/tensorflow/metadata"><strong>TensorFlow Metadata (TFMD)</strong></a> provides standard representations for metadata that are useful when training machine learning models with TensorFlow. The metadata may be produced by hand or automatically during input data analysis, and may be consumed for data validation, exploration, and transformation. The metadata serialization formats include:</p> <ul> <li>A schema describing tabular data (e.g., tf.Examples).</li> <li>A collection of summary statistics over such datasets.</li> </ul></li> <li><p><a href="/tfx/guide/mlmd"><strong>ML Metadata (MLMD)</strong></a> is a library for recording and retrieving metadata associated with ML developer and data scientist workflows. Most often the metadata uses TFMD representations. MLMD manages persistence using <a href="https://www.sqlite.org/index.html">SQL-Lite</a>, <a href="https://www.mysql.com/">MySQL</a>, and other similar data stores.</p></li> </ul> <h3 id="supporting_technologies" data-text="Supporting Technologies" tabindex="-1">Supporting Technologies</h3> <h4 id="required" data-text="Required" tabindex="-1">Required</h4> <ul> <li><a href="/tfx/guide/beam"><strong>Apache Beam</strong></a> is an open source, unified model for defining both batch and streaming data-parallel processing pipelines. TFX uses Apache Beam to implement data-parallel pipelines. The pipeline is then executed by one of Beam's supported distributed processing back-ends, which include Apache Flink, Apache Spark, <a href="https://cloud.google.com/dataflow/">Google Cloud Dataflow</a>, and others.</li> </ul> <h4 id="optional" data-text="Optional" tabindex="-1">Optional</h4> <p>Orchestrators such as Apache Airflow and Kubeflow make configuring, operating, monitoring, and maintaining an ML pipeline easier.</p> <ul> <li><p><a href="https://airflow.apache.org/"><strong>Apache Airflow</strong></a> is a platform to programmatically author, schedule and monitor workflows. TFX uses Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative.</p></li> <li><p><a href="https://www.kubeflow.org/"><strong>Kubeflow</strong></a> is dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable. Kubeflow's goal is not to recreate other services, but to provide a straightforward way to deploy best-of-breed open-source systems for ML to diverse infrastructures. <a href="https://www.kubeflow.org/docs/pipelines/pipelines-overview/">Kubeflow Pipelines</a> enable composition and execution of reproducible workflows on Kubeflow, integrated with experimentation and notebook based experiences. Kubeflow Pipelines services on Kubernetes include the hosted Metadata store, container based orchestration engine, notebook server, and UI to help users develop, run, and manage complex ML pipelines at scale. The Kubeflow Pipelines SDK allows for creation and sharing of components and composition of pipelines programmatically.</p></li> </ul> <h3 id="portability_and_interoperability" data-text="Portability and Interoperability" tabindex="-1">Portability and Interoperability</h3> <p>TFX is designed to be portable to multiple environments and orchestration frameworks, including <a href="/tfx/guide/airflow">Apache Airflow</a>, <a href="/tfx/guide/beam_orchestrator">Apache Beam</a> and <a href="/tfx/guide/kubeflow">Kubeflow</a> . It is also portable to different computing platforms, including on-premise, and cloud platforms such as the <a href="https://cloud.google.com/">Google Cloud Platform (GCP)</a>. In particular, TFX interoperates with serveral managed GCP services, such as <a href="https://cloud.google.com/ai-platform/">Cloud AI Platform</a> for <a href="https://cloud.google.com/ml-engine/">Training and Prediction</a>, and <a href="https://cloud.google.com/dataflow/">Cloud Dataflow</a> for distributed data processing for several other aspects of the ML lifecycle.</p> <aside class="note"><strong>Note:</strong><span> The current revision of this user guide primarily discusses deployment on a bare-metal system using Apache Airflow for orchestration.</span></aside> <h3 id="model_vs_savedmodel" data-text="Model vs. SavedModel" tabindex="-1">Model vs. SavedModel</h3> <h4 id="model" data-text="Model" tabindex="-1">Model</h4> <p>A model is the output of the training process. It is the serialized record of the weights that have been learned during the training process. These weights can be subsequently used to compute predictions for new input examples. For TFX and TensorFlow, 'model' refers to the checkpoints containing the weights learned up to that point.</p> <p>Note that 'model' might also refer to the definition of the TensorFlow computation graph (i.e. a Python file) that expresses how a prediction will be computed. The two senses may be used interchangeably based on context.</p> <h4 id="savedmodel" data-text="SavedModel" tabindex="-1">SavedModel</h4> <ul> <li><strong>What is a <a href="https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/saved_model">SavedModel</a></strong>: a universal, language-neutral, hermetic, recoverable serialization of a TensorFlow model.</li> <li><strong>Why is it important</strong>: It enables higher-level systems to produce, transform, and consume TensorFlow models using a single abstraction.</li> </ul> <p>SavedModel is the recommended serialization format for serving a TensorFlow model in production, or exporting a trained model for a native mobile or JavaScript application. For example, to turn a model into a REST service for making predictions, you can serialize the model as a SavedModel and serve it using TensorFlow Serving. See <a href="https://www.tensorflow.org/tfx/serving/serving_basic">Serving a TensorFlow Model</a> for more information.</p> <h3 id="schema" data-text="Schema" tabindex="-1">Schema</h3> <p>Some TFX components use a description of your input data called a <em>schema</em>. The schema is an instance of <a href="https://github.com/tensorflow/metadata/tree/master/tensorflow_metadata/proto/v0">schema.proto</a>. Schemas are a type of <a href="https://developers.google.com/protocol-buffers/">protocol buffer</a>, more generally known as a "protobuf". The schema can specify data types for feature values, whether a feature has to be present in all examples, allowed value ranges, and other properties. One of the benefits of using TensorFlow Data Validation (TFDV) is that it will automatically generate a schema by inferring types, categories, and ranges from the training data.</p> <p>Here's an excerpt from a schema protobuf:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Protocol Buffer"><code translate="no" dir="ltr"><span class="devsite-syntax-o">...</span> <span class="devsite-syntax-n">feature</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">name</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s">"age"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">value_count</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">min</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-k">max</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">type</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">FLOAT</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">presence</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">min_fraction</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">min_count</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-p">}</span> <span class="devsite-syntax-n">feature</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">name</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s">"capital-gain"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">value_count</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">min</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-k">max</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">type</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">FLOAT</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">presence</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">min_fraction</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">min_count</span><span class="devsite-syntax-o">:</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-mi">1</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-p">}</span> <span class="devsite-syntax-o">...</span> </code></pre></devsite-code> <p>The following components use the schema:</p> <ul> <li>TensorFlow Data Validation</li> <li>TensorFlow Transform</li> </ul> <p>In a typical TFX pipeline TensorFlow Data Validation generates a schema, which is consumed by the other components.</p> <aside class="note"><strong>Note:</strong><span> The auto-generated schema is best-effort and only tries to infer basic properties of the data. It is expected that developers review and modify it as needed.</span></aside> <h2 id="developing_with_tfx" data-text="Developing with TFX" tabindex="-1">Developing with TFX</h2> <p>TFX provides a powerful platform for every phase of a machine learning project, from research, experimentation, and development on your local machine, through deployment. In order to avoid code duplication and eliminate the potential for <a href="https://www.tensorflow.org/tfx/guide/tfdv#training-serving_skew_detection">training/serving skew</a> it is strongly recommended to implement your TFX pipeline for both model training and deployment of trained models, and use <a href="/tfx/guide/transform">Transform</a> components which leverage the <a href="/tfx/guide/tft">TensorFlow Transform</a> library for both training and inference. By doing so you will use the same preprocessing and analysis code consistently, and avoid differences between data used for training and data fed to your trained models in production, as well as benefitting from writing that code once.</p> <h3 id="data_exploration_visualization_and_cleaning" data-text="Data Exploration, Visualization, and Cleaning" tabindex="-1">Data Exploration, Visualization, and Cleaning</h3> <p><img src="/static/tfx/guide/images/prog_schemagen.png" alt="Data Exploration, Visualization, and Cleaning"></p> <p>TFX pipelines typically begin with an <a href="/tfx/guide/examplegen">ExampleGen</a> component, which accepts input data and formats it as tf.Examples. Often this is done after the data has been split into training and evaluation datasets so that there are actually two copies of ExampleGen components, one each for training and evaluation. This is typically followed by a <a href="/tfx/guide/statsgen">StatisticsGen</a> component and a <a href="/tfx/guide/schemagen">SchemaGen</a> component, which will examine your data and infer a data schema and statistics. The schema and statistics will be consumed by an <a href="/tfx/guide/exampleval">ExampleValidator</a> component, which will look for anomalies, missing values, and incorrect data types in your data. All of these components leverage the capabilities of the <a href="/tfx/guide/tfdv">TensorFlow Data Validation</a> library.</p> <p><a href="/tfx/guide/tfdv">TensorFlow Data Validation (TFDV)</a> is a valuable tool when doing initial exploration, visualization, and cleaning of your dataset. TFDV examines your data and infers the data types, categories, and ranges, and then automatically helps identify anomalies and missing values. It also provides visualization tools that can help you examine and understand your dataset. After your pipeline completes you can read metadata from <a href="/tfx/guide/mlmd">MLMD</a> and use the visualization tools of TFDV in a Jupyter notebook to analyze your data.</p> <p>Following your initial model training and deployment, TFDV can be used to monitor new data from inference requests to your deployed models, and look for anomalies and/or drift. This is especially useful for time series data that changes over time as a result of trend or seasonality, and can help inform when there are data problems or when models need to be retrained on new data.</p> <h3 id="data_visualization" data-text="Data Visualization" tabindex="-1">Data Visualization</h3> <p>After you have completed your first run of your data through the section of your pipeline that uses TFDV (typically StatisticsGen, SchemaGen, and ExampleValidator) you can visualize the results in a Jupyter style notebook. For additional runs you can compare these results as you make adjustments, until your data is optimal for your model and application.</p> <p>You will first query <a href="/tfx/guide/mlmd"><strong>ML Metadata (MLMD)</strong></a> to locate the results of these executions of these components, and then use the visualization support API in TFDV to create the visualizations in your notebook. This includes <a href="https://www.tensorflow.org/tfx/data_validation/api_docs/python/tfdv/load_statistics">tfdv.load_statistics()</a> and <a href="https://www.tensorflow.org/tfx/data_validation/api_docs/python/tfdv/visualize_statistics">tfdv.visualize_statistics()</a> Using this visualization you can better understand the characteristics of your dataset, and if necessary modify as required.</p> <h3 id="developing_and_training_models" data-text="Developing and Training Models" tabindex="-1">Developing and Training Models</h3> <p><img src="/static/tfx/guide/images/prog_transform.png" alt="Feature Engineering"></p> <p>A typical TFX pipeline will include a <a href="/tfx/guide/transform">Transform</a> component, which will perform feature engineering by leveraging the capabilities of the <a href="/tfx/guide/tft">TensorFlow Transform (TFT)</a> library. A Transform component consumes the schema created by a SchemaGen component, and applies <a href="https://www.tensorflow.org/tfx/tutorials/transform/simple">data transformations</a> to create, combine, and transform the features that will be used to train your model. Cleanup of missing values and conversion of types should also be done in the Transform component if there is ever a possibility that these will also be present in data sent for inference requests. <a href="/tfx/guide/train">There are some important considerations</a> when designing TensorFlow code for training in TFX.</p> <p><img src="/static/tfx/guide/images/prog_trainer.png" alt="Modeling and Training"></p> <p>The result of a Transform component is a SavedModel which will be imported and used in your modeling code in TensorFlow, during a <a href="/tfx/guide/trainer">Trainer</a> component. This SavedModel includes all of the data engineering transformations that were created in the Transform component, so that the identical transforms are performed using the exact same code during both training and inference. Using the modeling code, including the SavedModel from the Transform component, you can consume your training and evaluation data and train your model.</p> <p>When working with Estimator based models, the last section of your modeling code should save your model as both a SavedModel and an EvalSavedModel. Saving as an EvalSavedModel ensures the metrics used at training time are also available during evaluation (note that this is not required for keras based models). Saving an EvalSavedModel requires that you import the <a href="/tfx/guide/tfma">TensorFlow Model Analysis (TFMA)</a> library in your Trainer component.</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Python"><code translate="no" dir="ltr"><span class="devsite-syntax-kn">import</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nn">tensorflow_model_analysis</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-k">as</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nn">tfma</span> <span class="devsite-syntax-o">...</span> <span class="devsite-syntax-n">tfma</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">export</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">export_eval_savedmodel</span><span class="devsite-syntax-p">(</span> <span class="devsite-syntax-n">estimator</span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-n">estimator</span><span class="devsite-syntax-p">,</span> <span class="devsite-syntax-n">export_dir_base</span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-n">eval_model_dir</span><span class="devsite-syntax-p">,</span> <span class="devsite-syntax-n">eval_input_receiver_fn</span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-n">receiver_fn</span><span class="devsite-syntax-p">)</span> </code></pre></devsite-code> <p>An optional <a href="/tfx/guide/tuner">Tuner</a> component can be added before Trainer to tune the hyperparameters (e.g., number of layers) for the model. With the given model and hyperparameters' search space, tuning algorithm will find the best hyperparameters based on the objective.</p> <h3 id="analyzing_and_understanding_model_performance" data-text="Analyzing and Understanding Model Performance" tabindex="-1">Analyzing and Understanding Model Performance</h3> <p><img src="/static/tfx/guide/images/prog_evaluator.png" alt="Model Analysis"></p> <p>Following initial model development and training it's important to analyze and really understand your model's performance. A typical TFX pipeline will include an <a href="/tfx/guide/evaluator">Evaluator</a> component, which leverages the capabilities of the <a href="/tfx/guide/tfma">TensorFlow Model Analysis (TFMA)</a> library, which provides a power toolset for this phase of development. An Evaluator component consumes the model that you exported above, and allows you to specify a list of <a href="https://www.tensorflow.org/tfx/model_analysis/api_docs/python/tfma/SlicingSpec"><code translate="no" dir="ltr">tfma.SlicingSpec</code></a> that you can use when visualizing and analyzing your model's performance. Each <code translate="no" dir="ltr">SlicingSpec</code> defines a slice of your training data that you want to examine, such as particular categories for categorical features, or particular ranges for numerical features.</p> <p>For example, this would be important for trying to understand your model's performance for different segments of your customers, which could be segmented by annual purchases, geographical data, age group, or gender. This can be especially important for datasets with long tails, where the performance of a dominant group may mask unacceptable performance for important, yet smaller groups. For example, your model may perform well for average employees but fail miserably for executive staff, and it might be important to you to know that.</p> <h3 id="model_analysis_and_visualization" data-text="Model Analysis and Visualization" tabindex="-1">Model Analysis and Visualization</h3> <p>After you have completed your first run of your data through training your model and running the <a href="/tfx/guide/evaluator">Evaluator</a> component (which leverages <a href="/tfx/guide/tfma">TFMA</a>) on the training results, you can visualize the results in a Jupyter style notebook. For additional runs you can compare these results as you make adjustments, until your results are optimal for your model and application.</p> <p>You will first query <a href="/tfx/guide/mlmd"><strong>ML Metadata (MLMD)</strong></a> to locate the results of these executions of these components, and then use the visualization support API in TFMA to create the visualizations in your notebook. This includes <a href="https://www.tensorflow.org/tfx/model_analysis/api_docs/python/tfma/load_eval_results">tfma.load_eval_results</a> and <a href="https://www.tensorflow.org/tfx/model_analysis/api_docs/python/tfma/view/render_slicing_metrics">tfma.view.render_slicing_metrics</a> Using this visualization you can better understand the characteristics of your model, and if necessary modify as required.</p> <h3 id="validating_model_performance" data-text="Validating Model Performance" tabindex="-1">Validating Model Performance</h3> <p>As part of analyzing a model's performance you might want to validate the performance against a baseline (such as the currently serving model). Model validation is performed by passing both a candidate and baseline model to the <a href="/tfx/guide/evaluator">Evaluator</a> component. The Evaluator computes metrics (e.g. AUC, loss) for both the candidate and baseline along with a corresponding set of diff metrics. Thresholds may then be applied and used to gate pushing your models to production.</p> <h3 id="validating_that_a_model_can_be_served" data-text="Validating That A Model Can Be Served" tabindex="-1">Validating That A Model Can Be Served</h3> <p><img src="/static/tfx/guide/images/prog_infraval.png" alt="Infra Validation"></p> <p>Before deploying the trained model, you might want to validate whether the model is really servable in the serving infrastructure. This is especially important in production environments to ensure that the newly published model does not prevent the system from serving predictions. The <a href="/tfx/guide/infra_validator">InfraValidator</a> component will make a canary deployment of your model in a sandboxed environment, and optionally send real requests to check that your model works correctly.</p> <h2 id="deployment_targets" data-text="Deployment Targets" tabindex="-1">Deployment Targets</h2> <p>Once you have developed and trained a model that you're happy with, it's now time to deploy it to one or more deployment target(s) where it will receive inference requests. TFX supports deployment to three classes of deployment targets. Trained models which have been exported as SavedModels can be deployed to any or all of these deployment targets.</p> <p><img src="/static/tfx/guide/images/prog_fin.png" alt="Component Flow"></p> <h3 id="inference_tensorflow_serving" data-text="Inference: TensorFlow Serving" tabindex="-1">Inference: TensorFlow Serving</h3> <p><a href="/tfx/guide/serving">TensorFlow Serving (TFS)</a> is a flexible, high-performance serving system for machine learning models, designed for production environments. It consumes a SavedModel and will accept inference requests over either REST or gRPC interfaces. It runs as a set of processes on one or more network servers, using one of several advanced architectures to handle synchronization and distributed computation. See the <a href="/tfx/guide/serving">TFS documentation</a> for more information on developing and deploying TFS solutions.</p> <p>In a typical pipeline, a SavedModel which has been trained in a <a href="/tfx/guide/trainer">Trainer</a> component would first be infra-validated in an <a href="/tfx/guide/infra_validator">InfraValidator</a> component. InfraValidator launches a canary TFS model server to actually serve the SavedModel. If validation has passed, a <a href="/tfx/guide/pusher">Pusher</a> component will finally deploy the SavedModel to your TFS infrastructure. This includes handling multiple versions and model updates.</p> <h3 id="inference_in_native_mobile_and_iot_applications_tensorflow_lite" data-text="Inference in Native Mobile and IoT Applications: TensorFlow Lite" tabindex="-1">Inference in Native Mobile and IoT Applications: TensorFlow Lite</h3> <p><a href="https://www.tensorflow.org/lite">TensorFlow Lite</a> is a suite of tools which is dedicated to help developers use their trained TensorFlow Models in native mobile and IoT applications. It consumes the same SavedModels as TensorFlow Serving, and applies optimizations such as quantization and pruning to optimize the size and performance of the resulting models for the challenges of running on mobile and IoT devices. See the TensorFlow Lite documentation for more information on using TensorFlow Lite.</p> <h3 id="inference_in_javascript_tensorflow_js" data-text="Inference in JavaScript: TensorFlow JS" tabindex="-1">Inference in JavaScript: TensorFlow JS</h3> <p><a href="https://js.tensorflow.org/">TensorFlow JS</a> is a JavaScript library for training and deploying ML models in the browser and on Node.js. It consumes the same SavedModels as TensorFlow Serving and TensorFlow Lite, and converts them to the TensorFlow.js Web format. See the TensorFlow JS documentation for more details on using TensorFlow JS.</p> <h2 id="creating_a_tfx_pipeline_with_airflow" data-text="Creating a TFX Pipeline With Airflow" tabindex="-1">Creating a TFX Pipeline With Airflow</h2> <p>Check <a href="https://www.tensorflow.org/tfx/tutorials/tfx/airflow_workshop/">airflow workshop</a> for details</p> <h2 id="creating_a_tfx_pipeline_with_kubeflow" data-text="Creating a TFX Pipeline With Kubeflow" tabindex="-1">Creating a TFX Pipeline With Kubeflow</h2> <h3 id="setup" data-text="Setup" tabindex="-1">Setup</h3> <p>Kubeflow requires a Kubernetes cluster to run the pipelines at scale. See the Kubeflow deployment guideline that guide through the options for <a href="https://www.kubeflow.org/docs/started/installing-kubeflow/">deploying the Kubeflow cluster.</a></p> <h3 id="configure_and_run_tfx_pipeline" data-text="Configure and run TFX pipeline" tabindex="-1">Configure and run TFX pipeline</h3> <p>Please follow the <a href="https://www.tensorflow.org/tfx/tutorials/tfx/cloud-ai-platform-pipelines">TFX on Cloud AI Platform Pipeline tutorial</a> to run the TFX example pipeline on Kubeflow. TFX components have been containerized to compose the Kubeflow pipeline and the sample illustrates the ability to configure the pipeline to read large public dataset and execute training and data processing steps at scale in the cloud.</p> <h2 id="command_line_interface_for_pipeline_actions" data-text="Command line interface for pipeline actions" tabindex="-1">Command line interface for pipeline actions</h2> <p>TFX provides a unified CLI which helps the perform full range of pipeline actions such as create, update, run, list, and delete pipelines on various orchestrators including Apache Airflow, Apache Beam, and Kubeflow. For details, please follow <a href="https://github.com/tensorflow/tfx/blob/master/docs/guide/cli.md">these instructions</a>.</p> </div> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-09-06 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-09-06 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Stay connected</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//blog.tensorflow.org" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//discuss.tensorflow.org" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Forum </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//github.com/tensorflow/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > GitHub </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/tensorflow" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//youtube.com/tensorflow" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//github.com/tensorflow/tensorflow/issues" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Issue tracker </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//github.com/tensorflow/tensorflow/blob/master/RELEASE.md" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Release notes </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//stackoverflow.com/questions/tagged/tensorflow" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Stack Overflow </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/extras/tensorflow_brand_guidelines.pdf" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Brand guidelines </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/bib" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Cite TensorFlow </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the TensorFlow newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="//www.tensorflow.org/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{"dimensions": {"dimension12": false, "dimension3": false, "dimension6": "en", "dimension4": "TFX", "dimension1": "Signed out", "dimension5": "en"}, "gaid": "UA-69864048-1", "metrics": {"ratings_value": "metric1", "ratings_count": "metric2"}, "purpose": 0}]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [], "ga4p": [], "gtm": [{"id": "GTM-MXSL34P", "purpose": 0}], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "TFX", "signedIn": "False", "tenant": "tensorflow", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="Q9gJ8w69ZG30GM+R5o90xoNjiT1oBt"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/js/app_loader.js', '[15,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9","https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow","https://tensorflow-dot-devsite-v2-prod-3p.appspot.com",1,null,["/_pwa/tensorflow/manifest.json","https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/images/favicon.png","https://www.gstatic.com/devrel-devsite/prod/vd31e3ed8994e05c7f2cd0cf68a402ca7902bb92b6ec0977d7ef2a1c699fae3f9/tensorflow/images/lockup.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyCNm9YxQumEXwGJgTDjxoxXK6m1F-9720Q","AIzaSyCc76DZePGtoyUjqKrLdsMGk_ry7sljLbY","www.tensorflow.org","AIzaSyB9bqgQ2t11WJsOX8qNsCQ6U-w91mmqF-I","AIzaSyAdYnStPdzjcJJtQ0mvIaeaMKj7_t6J_Fg",null,null,null,["Search__enable_page_map","Search__enable_dynamic_content_confidential_banner","MiscFeatureFlags__enable_firebase_utm","Profiles__enable_recognition_badges","DevPro__enable_google_one_card","Profiles__enable_page_saving","DevPro__enable_enterprise","Cloud__enable_legacy_calculator_redirect","Concierge__enable_pushui","Profiles__enable_completecodelab_endpoint","Cloud__enable_free_trial_server_call","Profiles__enable_public_developer_profiles","MiscFeatureFlags__developers_footer_image","MiscFeatureFlags__gdp_dashboard_reskin_enabled","MiscFeatureFlags__enable_view_transitions","Profiles__enable_complete_playlist_endpoint","MiscFeatureFlags__developers_footer_dark_image","DevPro__enable_developer_subscriptions","Profiles__enable_stripe_subscription_management","Search__enable_suggestions_from_borg","Profiles__enable_profile_collections","EngEduTelemetry__enable_engedu_telemetry","MiscFeatureFlags__enable_project_variables","MiscFeatureFlags__enable_explain_this_code","DevPro__enable_devpro_offers","BookNav__enable_tenant_cache_key","Cloud__enable_cloudx_ping","Cloud__enable_llm_concierge_chat","MiscFeatureFlags__enable_variable_operator","Profiles__enable_completequiz_endpoint","Profiles__enable_purchase_prompts","Cloud__enable_cloud_shell_fte_user_flow","Cloud__enable_cloudx_experiment_ids","CloudShell__cloud_shell_button","Profiles__enable_awarding_url","DevPro__enable_cloud_innovators_plus","TpcFeatures__enable_unmirrored_page_left_nav","Search__enable_ai_eligibility_checks","Profiles__enable_join_program_group_endpoint","DevPro__enable_vertex_credit_card","Cloud__enable_cloud_facet_chat","Profiles__enable_developer_profiles_callout","Analytics__enable_clearcut_logging","Profiles__enable_release_notes_notifications","MiscFeatureFlags__enable_variable_operator_index_yaml","Profiles__require_profile_eligibility_for_signin","Concierge__enable_actions_menu","SignIn__enable_refresh_access_tokens","Experiments__reqs_query_experiments","MiscFeatureFlags__emergency_css","TpcFeatures__enable_mirror_tenant_redirects","CloudShell__cloud_code_overflow_menu","Profiles__enable_dashboard_curated_recommendations","Cloud__enable_cloud_shell","DevPro__enable_code_assist","DevPro__enable_firebase_workspaces_card","Cloud__enable_cloud_dlp_service","MiscFeatureFlags__enable_framebox_badge_methods"],null,null,"AIzaSyA58TaKli1DculwmAmbpzLVGuWc8eCQgQc","https://developerscontentserving-pa.googleapis.com","AIzaSyDWBU60w0P9hEkr29kkksYs8Z7gvZ8u_wc","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[15,"tensorflow","TensorFlow","www.tensorflow.org",null,"tensorflow-dot-devsite-v2-prod-3p.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1]],null,null,null,[1,null,1],[1,1,null,1,1]],null,[25,null,null,null,null,null,"/images/lockup.svg","/images/logo.png",null,null,null,1,1,null,null,null,null,null,null,null,null,1,null,null,null,null,[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1],null,[[],[1,1]],[[["UA-69864048-1"],["UA-69864048-4"],null,null,["UA-69864048-5"],["GTM-MXSL34P"],null,null,[["UA-69864048-1",1]],null,[["UA-69864048-5",1]],[["GTM-MXSL34P",1]],1],[[6,5],[3,2],[12,8],[4,3],[5,4],[1,1]],[[2,2],[1,1]]],null,4],null,null,1,null,"https://developerscontentinsights-pa.googleapis.com","AIzaSyC11xEGtFhkmSh_iF6l_itbxnFz2GrIBOg","AIzaSyAXJ10nRF73mmdSDINgkCNX5bbd2KPcWm8"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>