Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Panduan memulai TensorFlow 2 untuk para ahli

Lihat di TensorFlow.org Jalankan di Google Colab Lihat sumber di GitHub Unduh buku catatan

Ini adalah file notebook Google Colaboratory . Program Python dijalankan langsung di browser — cara yang bagus untuk mempelajari dan menggunakan TensorFlow. Untuk mengikuti tutorial ini, jalankan notebook di Google Colab dengan mengklik tombol di bagian atas halaman ini.

  1. Di Colab, sambungkan ke runtime Python: Di kanan atas bilah menu, pilih HUBUNGKAN .
  2. Jalankan semua sel kode notebook: Pilih Runtime > Run all .

Download dan instal TensorFlow 2. Impor TensorFlow ke dalam program Anda:

Impor TensorFlow ke dalam program Anda:

import tensorflow as tf

from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import Model

Muat dan siapkan set data MNIST .

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

# Add a channels dimension
x_train = x_train[..., tf.newaxis].astype("float32")
x_test = x_test[..., tf.newaxis].astype("float32")
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step

Gunakan tf.data untuk tf.data dan mengacak kumpulan data:

train_ds = tf.data.Dataset.from_tensor_slices(
    (x_train, y_train)).shuffle(10000).batch(32)

test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)

Bangun model tf.keras menggunakan API subclassing model Keras:

class MyModel(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)

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

# Create an instance of the model
model = MyModel()

Pilih fungsi pengoptimal dan kerugian untuk pelatihan:

loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

optimizer = tf.keras.optimizers.Adam()

Pilih metrik untuk mengukur kerugian dan akurasi model. Metrik ini mengakumulasi nilai selama beberapa waktu dan kemudian mencetak hasil keseluruhan.

train_loss = tf.keras.metrics.Mean(name='train_loss')
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')

test_loss = tf.keras.metrics.Mean(name='test_loss')
test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='test_accuracy')

Gunakantf.GradientTape untuk melatih model:

@tf.function
def train_step(images, labels):
  with tf.GradientTape() as tape:
    # training=True is only needed if there are layers with different
    # behavior during training versus inference (e.g. Dropout).
    predictions = model(images, training=True)
    loss = loss_object(labels, predictions)
  gradients = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(gradients, model.trainable_variables))

  train_loss(loss)
  train_accuracy(labels, predictions)

Uji modelnya:

@tf.function
def test_step(images, labels):
  # training=False is only needed if there are layers with different
  # behavior during training versus inference (e.g. Dropout).
  predictions = model(images, training=False)
  t_loss = loss_object(labels, predictions)

  test_loss(t_loss)
  test_accuracy(labels, predictions)
EPOCHS = 5

for epoch in range(EPOCHS):
  # Reset the metrics at the start of the next epoch
  train_loss.reset_states()
  train_accuracy.reset_states()
  test_loss.reset_states()
  test_accuracy.reset_states()

  for images, labels in train_ds:
    train_step(images, labels)

  for test_images, test_labels in test_ds:
    test_step(test_images, test_labels)

  print(
    f'Epoch {epoch + 1}, '
    f'Loss: {train_loss.result()}, '
    f'Accuracy: {train_accuracy.result() * 100}, '
    f'Test Loss: {test_loss.result()}, '
    f'Test Accuracy: {test_accuracy.result() * 100}'
  )
Epoch 1, Loss: 0.1360151171684265, Accuracy: 95.94332885742188, Test Loss: 0.06302054226398468, Test Accuracy: 97.90999603271484
Epoch 2, Loss: 0.04181966185569763, Accuracy: 98.71833038330078, Test Loss: 0.05256362631917, Test Accuracy: 98.22999572753906
Epoch 3, Loss: 0.020464003086090088, Accuracy: 99.33500671386719, Test Loss: 0.05558345466852188, Test Accuracy: 98.30999755859375
Epoch 4, Loss: 0.012017485685646534, Accuracy: 99.60333251953125, Test Loss: 0.06642905622720718, Test Accuracy: 98.1500015258789
Epoch 5, Loss: 0.00839359499514103, Accuracy: 99.73666381835938, Test Loss: 0.07797500491142273, Test Accuracy: 98.19999694824219

Pengklasifikasi gambar sekarang dilatih untuk ~ 98% akurasi pada set data ini. Untuk mempelajari lebih lanjut, baca tutorial TensorFlow .