# Awesome TensorFlowJS [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)

TensorFlow.js is an open source software library to develop machine learning models in JavaScript, and use machine learning
(training and inference) directly in the browser or Node.js.

This list is a collection of the best [TensorFlow.js](https://www.tensorflow.org/js) tools, resources, videos and shiny things.

---

## Contents

- [Learn](#learn)
  - [Documentation](#documentation)
  - [Tutorials](#tutorials)
  - [Models/Projects](#modelsprojects)
  - [Papers](#papers)
  - [Videos](#videos)
  - [Books](#books)
  - [Blog & Posts](#blog--posts)
  - [Powered by TensorFlow.js](#powered-by-tensorflowjs)

- [Tools](#tools)
  - [Libraries](#libraries)
  - [Tools/Utilities](#toolsutilities)

- [Community](#community)
  - [Online Community](#online-community)
  - [Social Media](#social-media)

- [Contributions](#contributions)

---

## Learn

### Documentation

- [Official Documentation](https://www.tensorflow.org/js/guide)
- [API Reference](https://js.tensorflow.org/api/latest/)


### Tutorials

- [TensorFlow.js gallery](https://github.com/tensorflow/tfjs/blob/master/GALLERY.md) -  A collection of TensorFlow.js projects, tutorials, videos, and more.
- [Machine Learning Crash Course](https://developers.google.com/machine-learning/crash-course/) - Google's fast-paced, practical introduction to machine learning.
- [Google Codelabs](https://codelabs.developers.google.com/) - Google Developers Codelabs provide a guided, tutorial, hands-on coding experience.
- [Beginning ML with TensorFlow.js](https://academy.infinite.red/p/beginning-machine-learning-with-tensorflow-js) - Full online course for web devs to get into TF.js.
- [Effective TensorFlow.js](https://effectivemachinelearning.com/TensorFlow.js) - TensorFlow.js tutorials and best practices.


### Models/Projects

- [Official tfjs models on TensorFlow.js repo](https://github.com/tensorflow/tfjs-models) - Pretrained models for TensorFlow.js.
- [Official tfjs models on TensorFlow.js website](https://www.tensorflow.org/js/models) - Explore pre-trained TensorFlow.js models that can be used in any project out of the box.
- [@tensorflow-models on NPM](https://www.npmjs.com/search?q=%40tensorflow-models) - Various pretrained models for TensorFlow.js on NPM.
- [Official tfjs examples repo](https://github.com/tensorflow/tfjs-examples) - Examples built with TensorFlow.js!
- [Official tfjs demo website](https://www.tensorflow.org/js/demos) - See examples and live demos built with TensorFlow.js!


### Papers

- [TensorFlow.js: Machine Learning for the Web and Beyond](https://arxiv.org/abs/1901.05350) - This paper describes the design, API, and implementation of TensorFlow.js, and highlights some of the impactful use cases.
- [JSDoop and TensorFlow.js: Volunteer Distributed Web Browser-Based Neural Network Training](https://arxiv.org/abs/1910.07402) - The experimental results show that training a neural network in distributed web browsers is feasible and accurate, has a high scalability, and it is an interesting area for research.


### Videos

- [Official TensorFlow.js video series](https://www.youtube.com/playlist?reload=9&list=PLs6AluHXaQnjeI6jzDkpKXvbPj31i4GgF) - The YouTube content focuses on TensorFlow ecosystem updates.
- [TensorFlow.js: ML for the web and beyond](https://youtu.be/iH9CS-QYmZs) - TensorFlow Dev Summit 2020.
- [Rock Paper Scissors!](https://www.youtube.com/watch?v=y4pfTQJaUJU) - Train Rock Paper Scissors on your machine and watch the results with your webcam!
- [Color Blind Tensors](https://www.youtube.com/watch?v=X55m9eS5UFU) - Manipulate image tensors to perceive color blindness, live coding.


### Books

- [Deep Learning with JavaScript](https://www.manning.com/books/deep-learning-with-javascript) - Learn to use TensorFlow.js to build deep learning models that run directly in the browser, master all the basics of deep learning and explore advanced concepts, like retraining existing models for transfer learning and image generation by Shanqing Cai, Stanley Bileschi, Eric D. Nielsen and Francois Chollet.

- [Hands-On Machine Learning with TensorFlow.js](https://www.amazon.com/Hands-Machine-Learning-TensorFlow-js-applications/dp/1838821732) - A guide to building ML applications integrated with web technology using the TensorFlow.js library by Kai Sasaki.

- [Learning Tensorflow.js: Powerful Machine Learning in JavaScript](https://amzn.to/3dR3vpY) - In this guide, author [Gant Laborde](https://github.com/gantman) provides a hands-on, end-to-end approach to TensorFlow.js fundamentals for a broad technical audience that includes data scientists, engineers, web developers, students, and researchers.

- [Practical TensorFlow.js](https://www.apress.com/gp/book/9781484262726) - Deep Learning in Web App Development by Juan De Dios Santos Rivera.

- [Practical Machine Learning in JavaScript](https://www.apress.com/gp/book/9781484264171) - TensorFlow.js for Web Developers by Charlie Gerard.


### Blog & Posts

- [Official TensorFlow.js blog](https://blog.tensorflow.org/search?label=TensorFlow.js&max-results=20) - Covers building models in JavaScript and using them in the browser or in Node.js.
- [Towards Data Science](https://towardsdatascience.com/search?q=tensorflow.js)



### Powered by TensorFlow.js

- [Handwritten Digit Classification](https://github.com/aaronhma/ngconf-2020) - A showcase project for [NgConf 2020](https://www.ng-conf.org/) talk on **A Journey into the World of Machine Learning with TensorFlow.js**.
- [NSFWJS - Indecent Content Checker](https://github.com/infinitered/nsfwjs) - A friendly library to check images to see if they are indecent content on either the client or the server!
- [Pose Animator](https://pose-animator-demo.firebaseapp.com/camera.html) - A tool to bring SVG characters to life in the browser via motion capture.
- [LipSync](https://lipsync.withyoutube.com/) - A web-based, playful, interactive experiences to lip sync to your favorite songs.
- [BodyPix](https://storage.googleapis.com/tfjs-models/demos/body-pix/index.html) - A real-time person and body-part segmentation in the browser.


## Tools

### Libraries

- [TensorFlow.js](https://github.com/tensorflow/tfjs) - A WebGL accelerated JavaScript library for training and deploying ML models.
- [ml5.js](https://ml5js.org/) - Friendly machine learning for the web.
- [face-api.js](https://github.com/justadudewhohacks/face-api.js) - JavaScript API for face detection and face recognition in the browser and Node.js with tensorflow.js.
- [handtrack.js](https://github.com/victordibia/handtrack.js/) - A library for prototyping realtime hand detection (bounding box), directly in the browser.
- [magenta.js](https://magenta.tensorflow.org/get-started/#magenta-js) - Music and Art Generation with Machine Intelligence in the Browser.
- [Danfo.js](https://danfo.jsdata.org/) - High-performance, intuitive, and easy-to-use data structures for manipulating and processing structured data. (Inspired by Pandas)


### Tools/Utilities

- [Glitch](https://glitch.com/@TensorFlowJS) - Build fast, full-stack web apps in browser for free (Tensorflow.js templates).
- [CodePen](https://codepen.io) - *bit.ly/codepen-tfjs* Best place to build, test and discover front-end code (Tensorflow.js templates).
- [TensorFlow Playground](https://playground.tensorflow.org) - Tinker With a Neural Network Right Here in Your Browser!
- [AiJS](https://aijs.rocks/) - A curated collection of inspirational AI-powered JavaScript apps.
- [Teachable Machine](https://teachablemachine.withgoogle.com/) - Train a computer to recognize your own images, sounds, & poses!
- [TensorPlayground.com](https://www.tensorplayground.com/1.0.0/) - Write, modify, and view tensors directly in the browser. Then share the code with others.


## Community

### Online Community

- [Twitter](https://twitter.com/tensorflow)
- [Stack Overflow](https://stackoverflow.com/questions/tagged/tensorflow.js)
- [Reddit](https://www.reddit.com/r/TensorFlowJS)


### Social Media

- [#MadeWithTFJS](https://twitter.com/hashtag/MadeWithTFJS) - See what the community has made and share your work!
- [Laurence Moroney](https://twitter.com/lmoroney) - Lead of AI Developer Relations at Google.
- [Nikhil Thorat](https://twitter.com/nsthorat) - Co-lead of TensorFlow.js.
- [Daniel Smilkov](https://twitter.com/dsmilkov) - Co-creator of TensorFlow.js.
- [Paige Bailey](https://twitter.com/DynamicWebPaige) - Building
Google AI for everyone, and for every platform.
- [Aaron Ma](https://twitter.com/aaronhma) - World's youngest TensorFlow contributor!
- [Sandeep Gupta](https://twitter.com/TheSandeepGupta) - Product Manager for TensorFlow.
- [Jason Mayes](https://twitter.com/jason_mayes) - Developer advocate for TensorFlow.js.
- [Gant Laborde](https://twitter.com/GantLaborde) - Web & Machine Learning GDE.

## Contributions

Your contributions are always welcome!

If you want to contribute to this list (please do), send me a pull request or contact me [@aaronhma on Twitter](https://twitter.com/aaronhma)
Also, if you notice that any of the above listed repositories should be deprecated, due to any of the following reasons:

- The repository's owner explicitly says that "this library is not maintained".
- Not committed for long time (2~3 years).

More info on the [guidelines](CONTRIBUTING.md).

**NOTE: In order to create an community that is welcome for all, ALL contributors MUST agree to the [Code of Conduct](https://github.com/aaronhma/awesome-tensorflow-js/blob/master/CODE_OF_CONDUCT.md).**
