# TensorFlow.js
TensorFlow.js is an open-source hardware-accelerated JavaScript library for
training and deploying machine learning models.
**Develop ML in the Browser**
Use flexible and intuitive APIs to build models from scratch using the low-level
JavaScript linear algebra library or the high-level layers API.
**Develop ML in Node.js**
Execute native TensorFlow with the same TensorFlow.js API under the Node.js
runtime.
**Run Existing models**
Use TensorFlow.js model converters to run pre-existing TensorFlow models right
in the browser.
**Retrain Existing models**
Retrain pre-existing ML models using sensor data connected to the browser or
other client-side data.
## About this repo
This repository contains the logic and scripts that combine
several packages.
APIs:
- [TensorFlow.js Core](/tfjs-core),
a flexible low-level API for neural networks and numerical computation.
- [TensorFlow.js Layers](/tfjs-layers),
a high-level API which implements functionality similar to
[Keras](https://keras.io/).
- [TensorFlow.js Data](/tfjs-data),
a simple API to load and prepare data analogous to
[tf.data](https://www.tensorflow.org/guide/datasets).
- [TensorFlow.js Converter](/tfjs-converter),
tools to import a TensorFlow SavedModel to TensorFlow.js
- [TensorFlow.js Vis](/tfjs-vis),
in-browser visualization for TensorFlow.js models
- [TensorFlow.js AutoML](/tfjs-automl),
Set of APIs to load and run models produced by
[AutoML Edge](https://cloud.google.com/vision/automl/docs/edge-quickstart).
Backends/Platforms:
- [TensorFlow.js CPU Backend](/tfjs-backend-cpu), pure-JS backend for Node.js and the browser.
- [TensorFlow.js WebGL Backend](/tfjs-backend-webgl), WebGL backend for the browser.
- [TensorFlow.js WASM Backend](/tfjs-backend-wasm), WebAssembly backend for the browser.
- [TensorFlow.js WebGPU](/tfjs-backend-webgpu), WebGPU backend for the browser.
- [TensorFlow.js Node](/tfjs-node), Node.js platform via TensorFlow C++ adapter.
- [TensorFlow.js React Native](/tfjs-react-native), React Native platform via expo-gl adapter.
If you care about bundle size, you can import those packages individually.
If you are looking for Node.js support, check out the [TensorFlow.js Node directory](/tfjs-node).
## Examples
Check out our
[examples repository](https://github.com/tensorflow/tfjs-examples)
and our [tutorials](https://js.tensorflow.org/tutorials/).
## Gallery
Be sure to check out [the gallery](GALLERY.md) of all projects related to TensorFlow.js.
## Pre-trained models
Be sure to also check out our [models repository](https://github.com/tensorflow/tfjs-models) where we host pre-trained models
on NPM.
## Benchmarks
* [Local benchmark tool](https://tfjs-benchmarks.web.app/). Use this webpage tool to collect the performance related metrics (speed, memory, etc) of TensorFlow.js models and kernels **on your local device** with CPU, WebGL or WASM backends. You can benchmark custom models by following this [guide](https://github.com/tensorflow/tfjs/blob/master/e2e/benchmarks/local-benchmark/README.md).
* [Multi-device benchmark tool](https://github.com/tensorflow/tfjs/tree/master/e2e/benchmarks/browserstack-benchmark/README.md). Use this tool to collect the same performance related metrics **on a collection of remote devices**.
## Getting started
There are two main ways to get TensorFlow.js in your JavaScript project:
via script tags or by installing it from NPM
and using a build tool like Parcel,
WebPack, or Rollup.
### via Script Tag
Add the following code to an HTML file:
```html