چگونه از گوگل Colab برای یادگیری عمیق استفاده کنیم؟

این آموزش برای برنامه ­نویسانی تهیه شده است که قصد ورود به دنیای یادگیری عمیق را دارند و به دنبال سکویی مناسب، برای انجام این کار هستند.

گوگل کولب یکی از سکوی­ های فوق­ العاده برای مشتاقان یادگیری عمیق است که می­ توان از آن برای آزمودن مدل­ های ابتدایی یادگیری ماشین، کسب تجربه و توسعه ­ی یک بینش درباره ­ی جنبه­ های مختلف یادگیری عمیق همانند بهینه ­سازی ابرپارامتر ها ( Hyperparameter Tuning )، پیش ­پردازش داده ­ها ، پیچیدگی مدل و بیش برازش ( Overfitting ) و دیگر موارد بهره برد.

مقدمه

گوگل کولب ( Colab )، یک دفترچه ژوپیتر بر مبنای محیط در حال اجرا ( Runtime Enviroment ) است که امکان اجرای کامل کد بر روی محیط ابری را فراهم می­ کند. اجرای کد روی محیط ابری ، زمانی­ که ماشین قدرتمند یا اینترنت پر سرعت در دسترس نباشد، یک امر ضروی است. زیرا می­ توان مدل­ های یادگیری ماشین و یادگیری عمیق در مقیاس بزرگ را به راحتی آموزش داد.

گوگل کولب محدودیت­ های پردازشی ماشین ­های محلی را از طریق پشتیبانی از دو تکنولوژی­ واحد پردازش گرافیکی ( GPU ) و واحد پردازش تنسور ( TPU ) رفع کرده است و همین امر آن را به یک ابزار مناسب برای مشتاقان یادگیری عمیق و تحلیل داده تبدیل کرده است. گوگل کولب برای اهداف تجاری نیز انتخاب مناسبی است زیرا هر ماشینی می­ تواند از راه دور به راحتی و تنها از طریق یک مرورگر به یک دفترچه کولب دسترسی پیدا کند. آنچه که شما در این آموزش فرا می ­گیرید به شرح ذیل است :

ایجاد اولین دفترچه .ipynb در کولب

ابتدا، کاربر گوگل کولب مرورگر مد نظر خود را باز می­ کند، به وب سایت colab.research.google.com می­ رود

 و با حساب کاربری گوگل خود، ورود می­ کند. برای ایجاد یک دفترچه ­ی جدید در حال اجرا، روی ” new notebook ” کلیک کنید.

جهت تغییر نام دفترچه از نام پیش فرض به نام دلخواه باید روی نام پیش فرض که درگوشه ­ی سمت چپ بالا قرار دارد، کلیک شود. یک کاربر کولب، کد خود را در بلوک سلول اجرایی تایپ می­ کند و جهت اجرای کد های نوشته شده در سلول، دکمه­ های Shift و Enter را هم ­زمان می­ فشارد.

اگر متغیری که در یک سلول اعلان شده باشد می ­تواند در سلول­ های دیگر به عنوان متغیر سراسری  استفاده شود و اگر صریحا بیان شده باشد مقدار متغیر به صورت خودکار در آخرین خط بلوک کد نشان داده می ­شود.

آموزش یک نمونه مدل تنسورفلو

آموزش یک مدل یادگیری عمیق در کولب بسیار ساده است. بهترین بخش در مورد آموزشِ یک مدل یادگیری عمیق در کولب این است که نیاز به راه ­اندازی یک محیط حین اجرای سفارشی نیست و تمام این موارد برای کاربر مدیریت شده ­اند. در ادامه برای درک بهتر این مسئله، آموزش یک مدل ابتدایی در یادگیری عمیق بررسی می­ شود. هدف از آموزش این مدل ابتدایی، بازشناسی ارقام دست­ نویس در  مجموعه داده­ی MNIST است. مدل مورد بررسی یک مدل ابتدایی است که تصاویر را به عنوان اعداد طبقه ­بندی کرده و ارقام دست­ نویس را بازشناسی می­ کند. داده­ ی مورد نیاز برای این آموزش از بایگانی مجموعه داده­ های استاندارد Keras بارگیری می ­شود.

راه اندازی

#import necessary libraries
import tensorflow as tf

#load training data and split into train and test sets
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

خروجی برای این قطعه کد به شکل زیر خواهد بود.

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
۱۱۴۹۳۳۷۶/۱۱۴۹۰۴۳۴ [==============================] - ۰s 0us/step

سپس مدل گوگل کولب با استفاده از  زبان پایتون مطابق با شکل زیر تعریف می­ شود.

#define model
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)
])

#define loss function variable
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

#define optimizer,loss function and evaluation metric
model.compile(optimizer='adam',
             loss=loss_fn,
             metrics=['accuracy'])

#train the model
model.fit(x_train,y_train,epochs=5)

خروجی مورد انتظار بعد از اتمام اجرای تکه کد بالا، در شکل زیر نشان داده شده است.

Epoch 1/5
۱۸۷۵/۱۸۷۵ [==============================] - ۳s 2ms/step - loss: 0.3006 - accuracy: 0.9125
Epoch 2/5
۱۸۷۵/۱۸۷۵ [==============================] - ۳s 2ms/step - loss: 0.1461 - accuracy: 0.9570
Epoch 3/5
۱۸۷۵/۱۸۷۵ [==============================] - ۳s 2ms/step - loss: 0.1098 - accuracy: 0.9673
Epoch 4/5
۱۸۷۵/۱۸۷۵ [==============================] - ۳s 2ms/step - loss: 0.0887 - accuracy: 0.9729
Epoch 5/5
۱۸۷۵/۱۸۷۵ [==============================] - ۳s 2ms/step - loss: 0.0763 - accuracy: 0.9754
<tensorflow.python.keras.callbacks.History at 0x7f2abd968fd0>

#test model accuracy on test set
model.evaluate(x_test,y_test,verbose=2)

 خروجی مورد انتظار :

۳۱۳/۳۱۳ - ۰s - loss: 0.0786 - accuracy: 0.9761
[۰٫۰۷۸۶۰۱۵۲۴۲۳۳۸۱۸۰۵, ۰٫۹۷۶۱۰۰۰۲۷۵۶۱۱۸۷۷]

#extend the base model to predict softmax output
probability_model = tf.keras.Sequential([
                                        model,
                                        tf.keras.layers.Softmax()])

نصب بسته ­ها در گوگل کولب

سلول کدِ کولب ، تنها کد های پایتون را اجرا نمی ­کند بلکه قادر به اجرای فرمان­ های پوسته ( Shell ) نیز هست. تنها کافی است برای اجرای فرمان­ های یک پوسته، قبل از فرمان یک علامت تعجب اضافه شود. سلول دفترچه با مشاهده علامت تعجب متوجه می­ شود  که  فرمان بعد از علامت تعجب را باید به عنوان یک فرمان پوسته اجرا کند.

در گوگل کولب بیشتر بسته ­های رایج و عمومی مورد نیاز برای یادگیری عمیق از قبل نصب شده اند. اما گاهی اوقات کاربر به کتابخانه ­هایی نیاز دارد که از محبوبیت کمتری برخوردار هستند یا قصد اجرای کد با نسخه­ ی دیگری از کتابخانه­ ی از قبل نصب شده را دارد. در چنین مواردی باید بسته ­های مورد نظر دستی نصب شوند. گوگل کولب از مدیریت بسته ای به نام pip برای نصب بسته ­ها استفاده می­ کند.

وارد کردن tensorflow

 

 

 

فرمانی که برای نصب یک نسخه­ ی خاص از تنسورفلو ، اجرا می­ شود عبارت است از :

!pip3 install tensorflow==1.5.0

خروجی مورد انتظار بعد از اجرای فرمان فوق در شکل زیر نشان داده شده است.

تنظیم خروجی TensorFlow

جهت استفاده از نسخه­­ ی جدید نصب شده کافی است روی RESTART RUNTIME کلیک کنید.

نسخه TensorFlow

 

 

همان­طور­که در تصویر بالا پیداست، نسخه­ی جریان تنسور از ۲٫۳٫۰ به ۱٫۵٫۰ تغییر داده شد.

دقت آزمون مدل آموزش داده شده در بالا نزدیک به ۹۷% است که دقت بسیار خوب و قابل ­قبولی است، اما نباید فراموش کرد که آزمون فوق بسیار ساده است. آموزش مدل ­ها معمولا به این سادگی نیست، زیرا در بیشتر موارد، مجموعه داده ­های مورد نیاز برای آموزش باید از منابع جداگانه همچون Kaggle دانلود شوند. در ادامه چگونگی دانلود مجموعه داده­ ها زمانی­که هیچ پیوندی مستقیمی از آن ها وجود ندارد شرح داده می ­شود.

چگونگی دانلود یک مجموعه داده

زمانی­که یک برنامه ­نویس یادگیری عمیق ، یک مدل یادگیری ماشین را روی ماشین محلی خود آموزش می ­دهد احتمالا هزینه ­های پهنای باند و ذخیره ­سازی که حاصل دانلود و ذخیره­ سازی مجموعه داده­ ی مورد نیاز برای آموزش مدل است ، وی را آزار خواهد داد. مجموعه داده­ های مورد نیاز برای یادگیری عمیق می ­توانند از نظر اندازه بسیار بزرگ (بین ۲۰ تا ۵۰ گیگا بایت) باشند.

دانلود چنین حجمی از داده در یک کشور در حال توسعه یک چالش خواهد بود، زیرا امکان دسترسی به اینترنت پر سرعت به معنای واقعی ­اش، وجود ندارد. استفاده از واسط ابری کارآمد ­ترین روشی است که می ­توان برای دانلود کردن و بهره بردن از چنین مجموعه داده­ی حجیمی به کار برد.

این روش برنامه ­نویس یادگیری عمیق را از بارگذاری دستی مجموعه داده­ ها از یک ماشین محلی، بی نیاز می­ کند. خوشبختانه کولب روش­ های مختلفی برای دانلود مجموعه داده ­ها از سکوهای رایج میزبان داده در اختیار کاربرانش قرار می ­دهد که در ادامه به آن ها اشاره خواهد شد.

دریافت مجموعه داده از Kaggle

جهت دانلود یک مجموعه داده از بین مجموعه داده ­های موجود در کگل گام های زیر طی می­ شوند.

  1. کاربر به حساب کاربری کگل خود رفته و روی Create New API Token کلیک می­ کند. این اقدام یک فایل json را دریافت کرده و روی ماشین کاربر قرار می­ دهد.
  2. کاربر به فایل پروژه­ ی گوگل کولب خود رفته و دستورات شکل زیر را اجرا می ­کند.
! pip install -q kaggle
from google.colab import files

# choose the kaggle.json file that you downloaded
files.upload()
! mkdir ~/.kaggle

# make a directory named kaggle and copy the kaggle.json file there
cp kaggle.json ~/.kaggle/

# change the permissions of the file
! chmod 600 ~/.kaggle/kaggle.json

# download the dataset for a specific competition
! kaggle competitions download -c 'name-of-competition'

دانلود مجموعه داده از یک وب سایت عام

در گوگل کولب، پسوند فایل­ هایی متناسب با نوع مرورگر مورد استفاده­ ی کاربر وجود دارند که پیوند دانلود مجموعه داده  را به قالب ‘curl’ یا  ‘wget’ تبدیل می­ کنند.

کاربر کولب می­ تواند از این قابلیت جهت دانلود کارآمد مجموعه داده استفاده کند. دو پسوند فایل ­های cliget  و CurlWget ، پسوند فایل­ هایی هستند که به ترتیب مختص مرورگرهای فایرفاکس و کروم هستند. به محض کلیک کاربر روی هر دکمه دانلودی در مرورگراش، این پسوند فایل­ ها یک فرمان curl/wget  تولید می­ کنند. سپس کاربر جهت دانلود مجموعه داده، می­ تواند فرمان تولید شده را در دفترچه کولب خود کپی و اجرا کند.

نکته: به صورت پیش­فرض یک دفترچه­ ی کولب از پوسته ­ی پایتون استفاده می کند. جهت اجرای فرمان­ های ترمینال در کولب باید از علامت تعجب در ابتدای فرمان استفاده شود. به عنوان مثال، جهت دانلود فایلی از یک url و ذخیره کردن آن در قالب یک فایل می ­توان از دستور زیر در کولب  استفاده کرد.

!curl http://some.url --output some.file

 توجه: دستور curl مجموعه داده را در فضای­کاری کولب ذخیره می­ کند. در نتیجه و به محض قطع شدن حین اجرا، مجموعه داده از دست خواهد رفت. یکی از اقدامات ایمن جهت حفظ مجموعه داده، قرار دادن آن مجموعه داده در درایو ابری ( پس از تکمیل شدن دانلود آن ) است.

دانلود مجموعه داده از پلتفرم ابری گوگل یا گوگل درایو

سکوی ابری گوگل، یک سکوی ذخیره­ سازی و رایانش ابری است که می ­توان از آن برای ذخیره­ سازی مجموعه داده­ های حجیم و همچنین وارد کردن مستقیم مجموعه داده از محیط ابری به کولب بهره برد. جهت بارگذاری و دانلود فایل در/از گوگل درایو، ابتدا باید حساب کاربری گوگلِ یک کاربر کولب، هویت­ سنجی شود. دستور هویت­ سنجی در شکل زیر نمایش داده شده است.

from google.colab import auth
auth.authenticate_user()

این دستور از کاربر کولب می­خواهد که پیوندی را با استفاده از حساب کاربری خود مشاهده کند. در این پیوند، یک کلید تصدیق در اختیار کاربر کولب قرار می­گیرد که باید  آن کلید را در فضای مهیا­ شده برای تصدیق حساب کاربری خود وارد کند.

اعتبار سنجی گوگل Colab

در ادامه باید gsutil جهت دانلود و بارگذاری فایل ­ها نصب شود و در انتها gcloud آغاز شود.

!curl https://sdk.cloud.google.com | bash
!gcloud init

بعد از انجام مراحل فوق، تنظیمات اولیه gcloud از بین گزینه­ های موجود انجام می­ شود.

راه اندازی gcloud

هنگامی­ که پیکربندی gcloud  تمام شود، می ­توان از فرمان­ های زیر برای دانلود /بارگذاری فایل­ ها از/به  ذخیره­ سازی ابری گوکل استفاده کرد.

دستور دانلود یک  فایل از ابر گوگل به گوگل کولب:

!gsutil cp gs://maskaravivek-data/data_file.csv 

دستور بارگذاری فایل ­ها از گوگل کولب در ابر گوگل:

gsutil cp test.csv gs://maskaravivek-data/

راه­ اندازی یک Runtime با GPU/TPU فعال­

یادگیری عمیق از منظر پردازشی یک فرآیند هزینه ­بر است. محاسبات زیادی باید هم­زمان انجام شوند تا مدل آموزش ببیند. جهت کاهش هزینه­ های پردازشی ، گوگل کولب علاوه بر حین اجرای سنتی که از CPU برای پردازش استفاده می­ کند، حین اجراهایی که از GPU و TPU بهره می­ برند را نیز فراهم کرده است.

بهترین انتخاب برای آموزش مدل­ های بزرگ حین اجرا با استفاده از CPU است زیرا حافظه بسیار زیادی را فراهم می­ سازد. حین اجرا با استفاده از GPU برای محاسبات غیر­ رایجی  مثل محاسبات دست ه­ای کوچک و nonMatMul ، منعطف ­تر و قابل برنامه­ ریزی ­تر خواهد بود.

برای محاسبات دست ه­ای بزرگ و شبکه­ های عصبی کانولوشنی حین اجرا با استفاده از TPU انتخاب مناسبی است و بالاترین ضریب گذردهی آموزش را دارد. توصیه می­ شود جهت بهره بردن از پتانسیل کولب، زمانیکه کاربر مدل کوچکتری برای آموزش دارد از حین اجراهایGPU/TPU استفاده کند.

به منظور ایجاد و فعال کردن یک حین اجرا با استفاده از GPU/TPU کافی است روی روی گزینه­ ی runtime که در منوی نوار ابزار قرار دارد کلیک شود. سپس روی گزینه­ ی Change runtime type کلیک شده و از منوی آبشاری Hardware  Accelerator یکی از گزینه­ های GPU/TPU را انتخاب کنید.

نوع Runtime
تنظیمات نوتبوک Colab

توجه شود که در دسترس بودن مداوم حین اجرای فعال TPU/GPU در نسخه­ ی رایگان گوگل کولب تضمین نشده است. به بیان دیگر ممکن است در صورت طولانی شدن استفاده از این حین اجرا ها، نشست ایجاد ­شده برای کاربر خاتمه یابد. یک کاربر کولب می­تواند نسخه ­ی حرف ه­ای گوگل کولب را خریداری کند تا با چنین مشکلی روبرو نشود.

آموزش مدل ­های بزرگ تر و پیچیده­ تر

معمولا آموزش­ مدل­ های پیچیده نیازمند بارگذاری مجموعه داده ­های حجیم هستند. توصیه می­ شود در آموزش این دسته از مدل ­ها، داده­ ها مستقیما از گوگل درایو با استفاده از روش استقرار درایو بارگیری شوند. در این روش، داده­ ها مستقیما از درایو مبدا (در اینجا گوگل درایو) به نمونه­ ی ایجاد­ شده برای حین اجرا وارد می­ شود.

برای شروع، کاربر باید گوگل درایو خود را ( جایی­که داده ­ها ذخیره شده ­اند) مستقر کند. کاربر کولب، همچنین می­ تواند از ذخیره­ سازی پیش­فرضی که در کولب وجود دارد بهره برده و مجموعه داده را مستقیم از گوگل درایو یا سکوی Kaggle به  گوگل کولب منتقل کند. 

استقرار یک درایو

گوگل کولب به کاربرانش این اجازه را می­دهد که داده­ی مورد نیاز برای آموزش یک مدل یادگیری عمیق را از حساب گوگل درایو خود وارد کنند. بنابراین کاربر می­تواند به داده ­های آموزشی مورد نیازش که در گوگل درایو ذخیره شده­اند دسترسی داشته باشد و از مجموعه داده­های حجیم برای آموزش بهره ببرد. دو روش برای استقرار گوگل درایو به گوگل کولب وجود دارد:

  • استفاده از واسط گرافیکی کاربر
  • استفاده از قطعه کد

۱- استفاده از رابط کاربری گرافیکی

در روش اول برای استقرار درایو کافی است کاربر روی نمادFiles   (گوشه سمت چپ صفحه نمایش) کلیک کند و سپس گزینه­ی Mount Drive را انتخاب نماید.
استفاده از رابط کاربری Colab

۲- استفاده از قطعه کد

در روش دوم کاربر باید  بلوک کد زیر را اجرا کند.

from google.colab import drive
drive.mount('/content/drive')

کاربر روی پیوند ایجاد­شده کلیک کرده، کد را کپی کرده و در کادر فراهم شده می­چسباند. سپس دکمه Enter را می­ فشارد تا استقرار داریو انجام شود.

اجرا کد گوگل Colab

تا اینجا بازشناسی ارقام دست­نویس  با استفاده  از یک مجموعه داده­ی پایه و یک مدل اولیه آموزش داده شده است. در ادامه یک شبکه عصبی کانولوشنی که مدل پیچیده­تری است برای بازشناسی ارقام دست­نویس آموزش داده می­شود.

آموزش یک مدل با Keras

Keras یک رابط برنامه ­نویسی کاربردی است که به زبان پایتون نوشته شده است و روی تنسورفلو اجرا می­ شود. از این رابط برنامه ­نویسی کاربردی برای ایجاد سریع نمونه­ اولیه ­ی مدل­ های تجربی و ارزیابی کارایی استفاده می­ شود. استقرار یک مدل در Keras بسیار ساده ­تر از استقرار مدل در جریان تنسور است. در زیر یک مثال آورده شده است.

#import necessary libraries
import numpy as np
import cv2
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
import pandas as pd
#mount drive and load csv data
from google.colab import drive
drive.mount('/content/drive')

#navigate to the directory containing the training data
cd drive/My\ Drive/

#load data
data = pd.read_csv('train.csv')

#preprocess the data
train = data.iloc[0:40000,:] #train split
train_X = train.drop('label',axis=1)
train_Y = train.iloc[:,0]
 
val = data.iloc[40000:,:]    #val split
val_X = val.drop('label',axis=1)
val_Y = val.iloc[:,0]
 
train_X = train_X.to_numpy() #convert pd data to numpy arrays
train_Y = train_Y.to_numpy()
val_X = val_X.to_numpy()
 
val_Y = val_Y.to_numpy()
train_X = train_X/255.    #normalise pixel values
val_X = val_X/255.
 
train_X = np.reshape(train_X,(40000,28,28,1)) #reshape data to feed to network
val_X = np.reshape(val_X,(2000,28,28,1))

#define model
model = keras.Sequential([
   keras.layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)),
   keras.layers.MaxPooling2D((2,2)),
   keras.layers.Conv2D(64,(3,3),activation='relu'),
   keras.layers.MaxPooling2D((2,2)),
   keras.layers.Conv2D(64,(3,3),activation='relu'),
   keras.layers.Flatten(),
   #keras.layers.Dense(128,activation='relu'),
   keras.layers.Dense(64,activation='relu'),
   #keras.layers.Dense(32,activation='relu'),
   keras.layers.Dense(10)
])
 
#state optimizer,loss and evaluation metric
model.compile(optimizer='adam',
            loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
            metrics=['accuracy'])
 
#train the model
model.fit(train_X,train_Y,epochs=10,validation_data=(val_X, val_Y))

به محض اجرای قطعه کد این سلول، خروجی­ای مشابه شکل زیر مشاهده خواهد شد.

Epoch 1/10
۱۲۵۰/۱۲۵۰ [==============================] - ۳۷s 30ms/step - loss: 0.1817 - accuracy: 0.9433 - val_loss: 0.0627 - val_accuracy: 0.9770
Epoch 2/10
۱۲۵۰/۱۲۵۰ [==============================] - ۳۶s 29ms/step - loss: 0.0537 - accuracy: 0.9838 - val_loss: 0.0471 - val_accuracy: 0.9850
Epoch 3/10
۱۲۵۰/۱۲۵۰ [==============================] - ۳۶s 29ms/step - loss: 0.0384 - accuracy: 0.9883 - val_loss: 0.0390 - val_accuracy: 0.9875
...
۱۲۵۰/۱۲۵۰ [==============================] - ۳۶s 29ms/step - loss: 0.0114 - accuracy: 0.9963 - val_loss: 0.0475 - val_accuracy: 0.9880
Epoch 10/10
۱۲۵۰/۱۲۵۰ [==============================] - ۳۶s 29ms/step - loss: 0.0101 - accuracy: 0.9967 - val_loss: 0.0982 - val_accuracy: 0.9735

#validate accuracy
test_loss, test_acc = model.evaluate(val_X,val_Y,verbose=2)
Expected output:
۶۳/۶۳ - ۱s - loss: 0.0982 - accuracy: 0.9735
 
 
#define prediction model
predict_model = tf.keras.Sequential([
   model,tf.keras.layers.Softmax()
])
 
#test on a validation image
test_image = val_X[140]
test_image = np.reshape(test_image,(1,28,28,1))
result = predict_model.predict(test_image)
print(np.argmax(result))
plt.imshow(val_X[140].reshape(28,28))
plt.show()

خروجی مورد انتظار:

خروجی مورد انتظار گوگل Colab

استفاده از کتابخانه یادگیری عمیق FastAI

FastAI یک کتابخانه سطح بالاست که بالای چارچوب PyTorch کار می­ کند. این کتابخانه به شما اجازه می ­دهد که از تعداد خط کد بسیار نا چیزی استفاده کنید. این کتابخانه برای یاد گرفتن موارد بسیار ابتدایی یادگیری عمیق  استفاده می­ شود و یک رویکرد بالا به پایین دارد یعنی؛ اول کد زده می ­شود و نتیجه مشاهده می­ شود سپس تئوری نهفته در پشت کد بررسی می­ شود.

تنسور بورد در گوگل کولب

تنسور بورد ( TensorBoard )  یک مجموعه ابزار برای بصری­ سازی داده­ های مرتبط با یادگیری ماشین است که توسط جریان تنسور تهیه شده است. این مجموعه ابزار به طور متداول جهت تعیین سنجه ­هایی نظیر دقت و زیان ( Loss ) طی تعدادی تکرار استفاده می­ شود. به علاوه از این مجموعه ابزار می­ توان برای بصری­ سازی و خلاصه­ سازی مدل و  نمایش  تصاویر، داده­ های متنی و صوتی بهره برد.

نظارت بر داده از طریق صفحه تنسور

برای استفاده از تنسور بورد ، اضافه کردن برخی کتابخانه­ ها ضروری است. قطعه کد زیر برای اضافه کردن این کتابخانه ­ها استفاده می­ شود.

# Load the TensorBoard notebook extension
%load_ext tensorboard
import datetime, os

قبل از اینکه اقدامی برای بصری­ سازی صورت گیرد باید در مدل نمونه مورد بررسی تغییراتی مطابق با شکل زیر ایجاد شود.

logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)

model.fit(x=x_train,y=y_train,epochs=5,validation_data=(x_test, y_test),callbacks=[tensorboard_callback])

بعد از اتمام آموزش مدل، کاربر می­ تواند مجموعه ابزار تنسور بورد را آغاز کند تا متوجه شود مدل چقدر خوب عمل کرده است.  این مجموعه ابزار به کاربر اطلاعاتی را در مورد چگونگی تغییرات دقت و هزینه  طی چند دوره ( Epoch ) که کاربر اجرا کرده است، نشان می دهد.

%tensorboard --logdir logs

دقت مدل TensorFlow گوگل Colab

ذخیره­ سازی و بارگیری یک مدل

آموزش یک مدل فرآیندی زمانبر است، بنابراین باید امکانی برای ذخیره کردن مدل آموزش­ دیده باشد تا بتوان به دفعات از آن استفاده کرد. آموزش یک مدل هر دفعه از ابتدا، نه تنها خسته­ کننده خواهد بود بلکه  زمان را نیز  هدر می ­دهد. گوگل کولب امکان ذخیره­ سازی یک مدل آموزش دیده و بارگیری آن مدل ذخیره­ شده را فراهم کرده است.

ذخیره سازی و بارگیری وزن ­های یک مدل

هدف اولیه از آموزش یک مدل در یادگیری عمیق،  تنظیم کردن وزن ­ها به گونه ­ای است که مدل بتواند خروجی را به درستی پیش ­بینی کند. این زمانی معنا خواهد داشت که بتوان وزن­ های یک مدل را ذخیره کرد و در زمان نیاز آن ها را استفاده کرد. دو دستور زیر به ترتیب جهت ذخیره کردن وزن ­ها و بارگیری وزن­ های ذخیره ­شده به کار می ­روند.

model.save_weights('./checkpoints/my_checkpoint')

model.load_weights('./checkpoints/my_checkpoint'

ذخیره سازی و بارگیری یک مدل کامل

گاهی اوقات بهتر است که مدل به شکل کامل ذخیره شود تا کاربر تنها یک بار درگیر مسایلی چون تعریف مدل، ابعاد ورودی و دیگر پیچیدگی­ ها شود. گوگل کولب این اجازه را به کاربرانش می­ دهد که یک مدل را به شکل کامل ذخیره کنند و در صورت نیاز آن را به ماشین­ های دیگر وارد کنند. دو دستور زیر به ترتیب برای ذخیره­ سازی یک مدل به شکل کامل و بارگیری آن مدل ذخیره­ شده استفاده می­ شوند.

#make sure to make a saved_model directory if it doesn't exist
model.save('saved_model/my_model'

new_model = tf.keras.models.load_model('saved_model/my_model')

نتیجه ­گیری

گوگل کولب یک ابزار فوق ­العاده برای ایجاد نمونه اولیه مدل ­های یادگیری عمیق و آزمودن آن ها است. گوگل کولب با داشتن قابلیت­ هایی همچون استفاده از GPU و وارد کردن داده از گوگل درایو، یک سکوی کارآمد برای آموزش مدل ­هایی محسوب می ­شود که روی ماشین ­های نه چندان قدرتمند از منظر فضای ذخیره­ سازی و قدرت محاسباتی قرار دارند.

این ابزار دفترچه کاربر در گوگل درایو را مدیریت می­ کند و یک سیستم مدیریت داده­ی با ثبات و سازمان­ یافته برای برنامه­ نویسانی که می­ خواهند روی یک پروژه کار کنند، فراهم می­ کند.

بیشتر بخوانید :

درباره‌ی احمدرضا جعفری

همچنین ببینید

آیا می خواهید در زمینه یادگیری ماشین استخدام شوید؟

آیا می خواهید در زمینه یادگیری ماشین استخدام شوید؟

مسیر های شغلی زیادی در حوزه یادگیری ماشین وجود دارد، اما از کجا بفهمیم که …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *