شروع سریع TensorFlow 2 برای کارشناسان

مشاهده در TensorFlow.org در Google Colab اجرا شود مشاهده منبع در GitHub دانلود دفترچه یادداشت

این یک فایل نوت بوک Google Collaboratory است. برنامه‌های پایتون مستقیماً در مرورگر اجرا می‌شوند – راهی عالی برای یادگیری و استفاده از TensorFlow. برای دنبال کردن این آموزش، نوت بوک را در Google Colab با کلیک بر روی دکمه بالای این صفحه اجرا کنید.

  1. در Colab، به زمان اجرا پایتون متصل شوید: در سمت راست بالای نوار منو، CONNECT را انتخاب کنید.
  2. اجرای تمام سلول های کد نوت بوک: زمان اجرا > اجرای همه را انتخاب کنید.

TensorFlow 2 را دانلود و نصب کنید. TensorFlow را به برنامه خود وارد کنید:

TensorFlow را به برنامه خود وارد کنید:

import tensorflow as tf
print("TensorFlow version:", tf.__version__)

from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import Model
TensorFlow version: 2.8.0-rc1

مجموعه داده 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")

از tf.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)

مدل tf.keras را با استفاده از API subclassing مدل 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()

یک بهینه ساز و تابع ضرر را برای آموزش انتخاب کنید:

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

optimizer = tf.keras.optimizers.Adam()

معیارهایی را برای اندازه گیری ضرر و دقت مدل انتخاب کنید. این معیارها مقادیر را در طول دوره ها جمع می کنند و سپس نتیجه کلی را چاپ می کنند.

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')

برای آموزش مدل از tf.GradientTape استفاده کنید:

@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)

مدل را تست کنید:

@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.13306719064712524, Accuracy: 96.03833770751953, Test Loss: 0.0717063844203949, Test Accuracy: 97.68999481201172
Epoch 2, Loss: 0.04493752866983414, Accuracy: 98.61833190917969, Test Loss: 0.058997876942157745, Test Accuracy: 98.18000030517578
Epoch 3, Loss: 0.023821160197257996, Accuracy: 99.22000122070312, Test Loss: 0.0560370571911335, Test Accuracy: 98.30999755859375
Epoch 4, Loss: 0.014193248935043812, Accuracy: 99.50666809082031, Test Loss: 0.06797954440116882, Test Accuracy: 98.29999542236328
Epoch 5, Loss: 0.010457769967615604, Accuracy: 99.63666534423828, Test Loss: 0.08524733036756516, Test Accuracy: 97.83999633789062

طبقه‌بندی کننده تصویر اکنون با دقت 98% در این مجموعه داده آموزش داده شده است. برای کسب اطلاعات بیشتر، آموزش های TensorFlow را بخوانید.