TensorFlow 2.0 Beta is available Learn more
TensorFlow is an end-to-end open source platform for machine learning

TensorFlow makes it easy for beginners and experts to create machine learning models. See the sections below to get started.

See tutorials

Tutorials show you how to use TensorFlow with complete, end-to-end examples.

See the guide

Guides explain the concepts and components of TensorFlow.

For beginners

The best place to start is with the user-friendly Sequential API. You can create models by plugging together building blocks. Run the “Hello World” example below, then visit the tutorials to learn more.

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
For experts

The Subclassing API provides a define-by-run interface for advanced research. Create a class for your model, then write the forward pass imperatively. Easily author custom layers, activations, and training loops. Run the “Hello World” example below, then visit the tutorials to learn more.

class MyModel(tf.keras.Model):
  def __init__(self):
    super(MyModel, self).__init__()
    self.conv1 = Conv2D(32, 3, activation='relu')
    self.flatten = Flatten()
    self.d1 = Dense(128, activation='relu')
    self.d2 = Dense(10, activation='softmax')

  def call(self, x):
    x = self.conv1(x)
    x = self.flatten(x)
    x = self.d1(x)
    return self.d2(x)
model = MyModel()

with tf.GradientTape() as tape:
  logits = model(images)
  loss_value = loss(logits, labels)
grads = tape.gradient(loss_value, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
Solutions to common problems

Explore step-by-step tutorials to help you with your projects.

For beginners
Your first neural network

Train a neural network to classify images of clothing, like sneakers and shirts, in this fast-paced overview of a complete TensorFlow program.

For experts
Generative adversarial networks

Train a generative adversarial network to generate images of handwritten digits, using the Keras Subclassing API.

For experts
Neural machine translation with attention

Train a sequence-to-sequence model for Spanish to English translation using the Keras Subclassing API.

News & announcements
Announcing TensorFlow 2.0 Beta
Feb 27, 2019 
Upgrading your code to TensorFlow 2.0

TensorFlow 2.0 will include many API changes, such as reordering arguments, renaming symbols, and changing default values for parameters. To streamline the changes, the TensorFlow engineering team has created a tf_upgrade_v2 utility that will help transition legacy...

May 8, 2019 
Getting Started with TensorFlow 2.0 (I/O'19)

Understand new user-friendly APIs for beginners and experts through code examples, and understand the Keras Sequential, Functional, and Subclassing APIs for your projects.

Jun 10, 2019 
Introducing TF.Text

TF.Text is a TensorFlow 2.0 library that handles preprocessing regularly found in text-based models, and other features useful for language modeling not provided by core TensorFlow.

Community participation

See more ways to participate in the TensorFlow community.

TensorFlow on GitHub 
Ask a question on StackOverflow 
Community discussion forum 
Announcement only mailing list 
Share your TensorFlow story