مشاهده در TensorFlow.org | در Google Colab اجرا شود | مشاهده منبع در GitHub | دانلود دفترچه یادداشت |
این یک فایل نوت بوک Google Collaboratory است. برنامههای پایتون مستقیماً در مرورگر اجرا میشوند – راهی عالی برای یادگیری و استفاده از TensorFlow. برای دنبال کردن این آموزش، نوت بوک را در Google Colab با کلیک بر روی دکمه بالای این صفحه اجرا کنید.
- در Colab، به زمان اجرا پایتون متصل شوید: در سمت راست بالای نوار منو، CONNECT را انتخاب کنید.
- اجرای تمام سلول های کد نوت بوک: زمان اجرا > اجرای همه را انتخاب کنید.
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 را بخوانید.
مشاهده در TensorFlow.org
در Google Colab اجرا شود
مشاهده منبع در GitHub
دانلود دفترچه یادداشت