What is @tensorflow/tfjs?
@tensorflow/tfjs is an open-source hardware-accelerated JavaScript library for training and deploying machine learning models. It allows you to develop machine learning models in JavaScript and use them in the browser or on Node.js.
What are @tensorflow/tfjs's main functionalities?
Creating and Training Models
This code demonstrates how to create a simple neural network model, compile it, and train it using synthetic data. The model is then used for inference.
const tf = require('@tensorflow/tfjs');
// Define a simple model
const model = tf.sequential();
model.add(tf.layers.dense({units: 100, activation: 'relu', inputShape: [10]}));
model.add(tf.layers.dense({units: 1, activation: 'linear'}));
// Compile the model
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
// Generate some synthetic data for training
const xs = tf.randomNormal([100, 10]);
const ys = tf.randomNormal([100, 1]);
// Train the model
model.fit(xs, ys, {epochs: 10}).then(() => {
// Use the model for inference
model.predict(tf.randomNormal([1, 10])).print();
});
Loading Pre-trained Models
This code demonstrates how to load a pre-trained model from a URL and use it for inference on an image. The image is preprocessed to match the input requirements of the model.
const tf = require('@tensorflow/tfjs');
// Load a pre-trained model from a URL
const modelUrl = 'https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_0.25_224/model.json';
tf.loadGraphModel(modelUrl).then(model => {
// Use the model for inference
const img = tf.browser.fromPixels(document.getElementById('image'));
const resizedImg = tf.image.resizeBilinear(img, [224, 224]);
const input = resizedImg.expandDims(0).toFloat().div(tf.scalar(127)).sub(tf.scalar(1));
model.predict(input).print();
});
Tensor Operations
This code demonstrates basic tensor operations such as addition. Tensors are the core data structure in TensorFlow.js, and you can perform various mathematical operations on them.
const tf = require('@tensorflow/tfjs');
// Create tensors
const a = tf.tensor([1, 2, 3, 4]);
const b = tf.tensor([5, 6, 7, 8]);
// Perform tensor operations
const c = a.add(b);
c.print(); // Output: [6, 8, 10, 12]
Other packages similar to @tensorflow/tfjs
brain.js
Brain.js is a JavaScript library for neural networks. It is simpler and more beginner-friendly compared to TensorFlow.js, but it is less powerful and flexible. Brain.js is suitable for smaller projects and simpler neural network tasks.
synaptic
Synaptic is a JavaScript neural network library for node.js and the browser. It provides a wide range of neural network architectures and is relatively easy to use. However, it does not offer the same level of performance and hardware acceleration as TensorFlow.js.
ml5
ml5.js is a high-level library built on top of TensorFlow.js, designed to make machine learning accessible to artists, creative coders, and students. It provides a simplified API for common machine learning tasks, making it easier to use but less flexible for advanced users.
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:
Backends/Platforms:
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.
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 pre-trained models
on NPM.
Benchmarks
- Local benchmark tool. 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.
- Multi-device benchmark tool. 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>
<head>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js"> </script>
<script>
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
model.fit(xs, ys).then(() => {
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';
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
model.fit(xs, ys).then(() => {
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:
Various ops supported in different backends
Please refer below :
Find out more
TensorFlow.js is a part of the
TensorFlow ecosystem. For more info:
Thanks, BrowserStack, for providing testing support.