این آموزش برای برنامه نویسانی تهیه شده است که قصد ورود به دنیای یادگیری عمیق را دارند و به دنبال سکویی مناسب، برای انجام این کار هستند.
گوگل کولب یکی از سکوی های فوق العاده برای مشتاقان یادگیری عمیق است که می توان از آن برای آزمودن مدل های ابتدایی یادگیری ماشین، کسب تجربه و توسعه ی یک بینش درباره ی جنبه های مختلف یادگیری عمیق همانند بهینه سازی ابرپارامتر ها ( 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 برای نصب بسته ها استفاده می کند.
فرمانی که برای نصب یک نسخه ی خاص از تنسورفلو ، اجرا می شود عبارت است از :
!pip3 install tensorflow==1.5.0
خروجی مورد انتظار بعد از اجرای فرمان فوق در شکل زیر نشان داده شده است.
جهت استفاده از نسخه ی جدید نصب شده کافی است روی RESTART RUNTIME کلیک کنید.
همانطورکه در تصویر بالا پیداست، نسخهی جریان تنسور از ۲٫۳٫۰ به ۱٫۵٫۰ تغییر داده شد.
دقت آزمون مدل آموزش داده شده در بالا نزدیک به ۹۷% است که دقت بسیار خوب و قابل قبولی است، اما نباید فراموش کرد که آزمون فوق بسیار ساده است. آموزش مدل ها معمولا به این سادگی نیست، زیرا در بیشتر موارد، مجموعه داده های مورد نیاز برای آموزش باید از منابع جداگانه همچون Kaggle دانلود شوند. در ادامه چگونگی دانلود مجموعه داده ها زمانیکه هیچ پیوندی مستقیمی از آن ها وجود ندارد شرح داده می شود.
چگونگی دانلود یک مجموعه داده
زمانیکه یک برنامه نویس یادگیری عمیق ، یک مدل یادگیری ماشین را روی ماشین محلی خود آموزش می دهد احتمالا هزینه های پهنای باند و ذخیره سازی که حاصل دانلود و ذخیره سازی مجموعه داده ی مورد نیاز برای آموزش مدل است ، وی را آزار خواهد داد. مجموعه داده های مورد نیاز برای یادگیری عمیق می توانند از نظر اندازه بسیار بزرگ (بین ۲۰ تا ۵۰ گیگا بایت) باشند.
دانلود چنین حجمی از داده در یک کشور در حال توسعه یک چالش خواهد بود، زیرا امکان دسترسی به اینترنت پر سرعت به معنای واقعی اش، وجود ندارد. استفاده از واسط ابری کارآمد ترین روشی است که می توان برای دانلود کردن و بهره بردن از چنین مجموعه دادهی حجیمی به کار برد.
این روش برنامه نویس یادگیری عمیق را از بارگذاری دستی مجموعه داده ها از یک ماشین محلی، بی نیاز می کند. خوشبختانه کولب روش های مختلفی برای دانلود مجموعه داده ها از سکوهای رایج میزبان داده در اختیار کاربرانش قرار می دهد که در ادامه به آن ها اشاره خواهد شد.
دریافت مجموعه داده از Kaggle
جهت دانلود یک مجموعه داده از بین مجموعه داده های موجود در کگل گام های زیر طی می شوند.
- کاربر به حساب کاربری کگل خود رفته و روی Create New API Token کلیک می کند. این اقدام یک فایل json را دریافت کرده و روی ماشین کاربر قرار می دهد.
- کاربر به فایل پروژه ی گوگل کولب خود رفته و دستورات شکل زیر را اجرا می کند.
! 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()
این دستور از کاربر کولب میخواهد که پیوندی را با استفاده از حساب کاربری خود مشاهده کند. در این پیوند، یک کلید تصدیق در اختیار کاربر کولب قرار میگیرد که باید آن کلید را در فضای مهیا شده برای تصدیق حساب کاربری خود وارد کند.
در ادامه باید gsutil جهت دانلود و بارگذاری فایل ها نصب شود و در انتها gcloud آغاز شود.
!curl https://sdk.cloud.google.com | bash !gcloud init
بعد از انجام مراحل فوق، تنظیمات اولیه 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 را انتخاب کنید.
توجه شود که در دسترس بودن مداوم حین اجرای فعال TPU/GPU در نسخه ی رایگان گوگل کولب تضمین نشده است. به بیان دیگر ممکن است در صورت طولانی شدن استفاده از این حین اجرا ها، نشست ایجاد شده برای کاربر خاتمه یابد. یک کاربر کولب میتواند نسخه ی حرف های گوگل کولب را خریداری کند تا با چنین مشکلی روبرو نشود.
آموزش مدل های بزرگ تر و پیچیده تر
معمولا آموزش مدل های پیچیده نیازمند بارگذاری مجموعه داده های حجیم هستند. توصیه می شود در آموزش این دسته از مدل ها، داده ها مستقیما از گوگل درایو با استفاده از روش استقرار درایو بارگیری شوند. در این روش، داده ها مستقیما از درایو مبدا (در اینجا گوگل درایو) به نمونه ی ایجاد شده برای حین اجرا وارد می شود.
برای شروع، کاربر باید گوگل درایو خود را ( جاییکه داده ها ذخیره شده اند) مستقر کند. کاربر کولب، همچنین می تواند از ذخیره سازی پیشفرضی که در کولب وجود دارد بهره برده و مجموعه داده را مستقیم از گوگل درایو یا سکوی Kaggle به گوگل کولب منتقل کند.
استقرار یک درایو
گوگل کولب به کاربرانش این اجازه را میدهد که دادهی مورد نیاز برای آموزش یک مدل یادگیری عمیق را از حساب گوگل درایو خود وارد کنند. بنابراین کاربر میتواند به داده های آموزشی مورد نیازش که در گوگل درایو ذخیره شدهاند دسترسی داشته باشد و از مجموعه دادههای حجیم برای آموزش بهره ببرد. دو روش برای استقرار گوگل درایو به گوگل کولب وجود دارد:
- استفاده از واسط گرافیکی کاربر
- استفاده از قطعه کد
۱- استفاده از رابط کاربری گرافیکی
در روش اول برای استقرار درایو کافی است کاربر روی نمادFiles (گوشه سمت چپ صفحه نمایش) کلیک کند و سپس گزینهی Mount Drive را انتخاب نماید.
۲- استفاده از قطعه کد
در روش دوم کاربر باید بلوک کد زیر را اجرا کند.
from google.colab import drive drive.mount('/content/drive')
کاربر روی پیوند ایجادشده کلیک کرده، کد را کپی کرده و در کادر فراهم شده میچسباند. سپس دکمه Enter را می فشارد تا استقرار داریو انجام شود.
تا اینجا بازشناسی ارقام دستنویس با استفاده از یک مجموعه دادهی پایه و یک مدل اولیه آموزش داده شده است. در ادامه یک شبکه عصبی کانولوشنی که مدل پیچیدهتری است برای بازشناسی ارقام دستنویس آموزش داده میشود.
آموزش یک مدل با 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()
خروجی مورد انتظار:
استفاده از کتابخانه یادگیری عمیق 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
ذخیره سازی و بارگیری یک مدل
آموزش یک مدل فرآیندی زمانبر است، بنابراین باید امکانی برای ذخیره کردن مدل آموزش دیده باشد تا بتوان به دفعات از آن استفاده کرد. آموزش یک مدل هر دفعه از ابتدا، نه تنها خسته کننده خواهد بود بلکه زمان را نیز هدر می دهد. گوگل کولب امکان ذخیره سازی یک مدل آموزش دیده و بارگیری آن مدل ذخیره شده را فراهم کرده است.
ذخیره سازی و بارگیری وزن های یک مدل
هدف اولیه از آموزش یک مدل در یادگیری عمیق، تنظیم کردن وزن ها به گونه ای است که مدل بتواند خروجی را به درستی پیش بینی کند. این زمانی معنا خواهد داشت که بتوان وزن های یک مدل را ذخیره کرد و در زمان نیاز آن ها را استفاده کرد. دو دستور زیر به ترتیب جهت ذخیره کردن وزن ها و بارگیری وزن های ذخیره شده به کار می روند.
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 و وارد کردن داده از گوگل درایو، یک سکوی کارآمد برای آموزش مدل هایی محسوب می شود که روی ماشین های نه چندان قدرتمند از منظر فضای ذخیره سازی و قدرت محاسباتی قرار دارند.
این ابزار دفترچه کاربر در گوگل درایو را مدیریت می کند و یک سیستم مدیریت دادهی با ثبات و سازمان یافته برای برنامه نویسانی که می خواهند روی یک پروژه کار کنند، فراهم می کند.
سلام
ممنون وقت گذاشتید و مطالب خیلی عالی گذاشتید. انشالله موفق باشید