Skip to content
A WebGL accelerated JavaScript library for training and deploying ML models.
TypeScript Python JavaScript HTML Shell C++ Other
Branch: master
Clone or download
dsmilkov [tfjs-converter] Strip unused ops during model conversion (#2058)
PERF

Strip unused ops based on the `(input_nodes, output_nodes)` pair from the signature def.

Before this change, the converter fails with a list of unsupported ops even if those ops are not used by the subgraph as defined by the `SignatureDef`, because the stripping was only based on output_nodes (input nodes were ignored).

After this change, the converter succeeds in converting AutoML models without having to specify the `--skip_op_check`, and resulted in following size reduction of `model.json`:
- AutoML Image classification model 172K --> 152K (-11%)
- AutoML Object Detection 294K --> 278K (-5.5%)
Latest commit 59556e7 Sep 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.tslint add .tslint (#1477) Jul 22, 2019
.vscode [tfjs-converter] Use global lint settings (#1904) Aug 27, 2019
scripts Create a tfjs-node-gpu directory. (#1925) Sep 11, 2019
tfjs-automl Bump automl alpha version (#2053) Sep 17, 2019
tfjs-backend-nodegl [global] Switch half the projects to Typescript 3.5.3 and add a… (#1886) Aug 22, 2019
tfjs-backend-wasm Add documentation for emsdk in home dir (#2066) Sep 19, 2019
tfjs-backend-webgpu Revert "Replace mul+add with fma" (#2060) Sep 18, 2019
tfjs-converter [tfjs-converter] Strip unused ops during model conversion (#2058) Sep 20, 2019
tfjs-core Add chrome on android to CI tests (#2015) Sep 18, 2019
tfjs-data ArrayBuffer should not be deep cloned (#2064) Sep 19, 2019
tfjs-layers Bring back the dist importing lint rule (#2039) Sep 13, 2019
tfjs-node-gpu Bring back the dist importing lint rule (#2039) Sep 13, 2019
tfjs-node Bring back the dist importing lint rule (#2039) Sep 13, 2019
tfjs-react-native [tfjs-react-native] Update README.md (#1995) Sep 18, 2019
tfjs-vis Update tfjs-vis to 1.2.0. (#2072) Sep 20, 2019
tfjs [benchmarks] Upgrade to tfjs and tfjs-node 1.2.9 (#1997) Sep 20, 2019
.gitignore Create a tfjs-node-gpu directory. (#1925) Sep 11, 2019
CONTRIBUTING.md Cleanup markdown files after monorepo merge & add tfjs cloudbui… (#1812) Aug 13, 2019
DEVELOPMENT.md Cleanup markdown files after monorepo merge & add tfjs cloudbui… (#1812) Aug 13, 2019
GALLERY.md Add Rock Paper Scissors example blog post (#1799) Aug 12, 2019
ISSUE_TEMPLATE.md Merge tensorflow/tfjs-core into the monorepo. Aug 13, 2019
LICENSE add license file and contributing.md and link to main issues repo (#40) Dec 7, 2018
README.md Add `Develop ML in Node.js` in TensorFlow.js introduction (#1656) Jun 11, 2019
WORKSPACE Add a bazel TS build (#1650) Mar 29, 2019
cloudbuild.yml Create a tfjs-node-gpu directory. (#1925) Sep 11, 2019
package.json Bring back the dist importing lint rule (#2039) Sep 13, 2019
pull_request_template.md Cleanup markdown files after monorepo merge & add tfjs cloudbui… (#1812) Aug 13, 2019
tfjs.code-workspace Consolidate `.vscode/settings.json` into a single file, shared… (#1858) Aug 19, 2019
tsconfig.json Move rollup-plugin-visualizer from optionalDep to devDep (#1817) Jun 27, 2019
tslint.json Bring back the dist importing lint rule (#2039) Sep 13, 2019
yarn.lock Bring back the dist importing lint rule (#2039) Sep 13, 2019

README.md

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 four packages:

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 repository.

Examples

Check out our examples repository and our tutorials.

Gallery

Be sure to check out the gallery of all projects related to TensorFlow.js.

Pre-trained models

Be sure to also check out our models repository where we host pretrained models on NPM.

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>
  <head>
    <!-- Load TensorFlow.js -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js"> </script>


    <!-- Place your code in the script tag below. You can also use an external .js file -->
    <script>
      // Notice there is no 'import' statement. 'tf' is available on the index-page
      // because of the script tag above.

      // Define a model for linear regression.
      const model = tf.sequential();
      model.add(tf.layers.dense({units: 1, inputShape: [1]}));

      // Prepare the model for training: Specify the loss and the optimizer.
      model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

      // Generate some synthetic data for training.
      const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
      const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

      // Train the model using the data.
      model.fit(xs, ys).then(() => {
        // Use the model to do inference on a data point the model hasn't seen before:
        // Open the browser devtools to see the output
        model.predict(tf.tensor2d([5], [1, 1])).print();
      });
    </script>
  </head>

  <body>
  </body>
</html>

Open up that html file in your browser and the code should run!

via NPM

Add TensorFlow.js to your project using yarn or npm. Note: Because we use ES2017 syntax (such as import), this workflow assumes you are using a modern browser or a bundler/transpiler to convert your code to something older browsers understand. See our examples to see how we use Parcel to build our code. However you are free to use any build tool that you prefer.

import * as tf from '@tensorflow/tfjs';

// Define a model for linear regression.
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));

// Prepare the model for training: Specify the loss and the optimizer.
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

// Generate some synthetic data for training.
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

// Train the model using the data.
model.fit(xs, ys).then(() => {
  // Use the model to do inference on a data point the model hasn't seen before:
  model.predict(tf.tensor2d([5], [1, 1])).print();
});

See our tutorials, examples and documentation for more details.

Importing pre-trained models

We support porting pre-trained models from:

Find out more

TensorFlow.js is a part of the TensorFlow ecosystem. For more info:

Thanks BrowserStack for providing testing support.

You can’t perform that action at this time.