با یه تیر دو نشان بزن🎯، هدیه 6 میلیونی(متخصص لینوکس) به همراه ۲0٪ تخفیف روی همه دوره‌های متخصص😍
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ دیدگاه نظر سحر پاشائی
keras چیست؟ (کتابخانه یادگیری عمیق کرس)
keras چیست؟ (کتابخانه یادگیری عمیق کرس)

تا حالا به این فکر کردی که هوش مصنوعی چطور می‌تونه کارهایی رو انجام بده که قبلاً غیرممکن به نظر می‌رسید؟ تشخیص چهره، ترجمه زبان، رانندگی خودکار، و هزاران کار شگفت‌انگیز دیگه که همه با الهام از مغز انسان و به کمک یادگیری عمیق انجام می‌شن.

یادگیری عمیق یه شاخه از هوش مصنوعیه که با تقلید از عملکرد مغز انسان، مسائل پیچیده رو حل می‌کنه. تو این روش، از شبکه‌های عصبی مصنوعی استفاده می‌شه که با به‌کارگیری مجموعه‌ای از الگوریتم‌ها تو لایه‌های مختلف، مغز انسان رو شبیه‌سازی می‌کنن. اما پیاده‌سازی این شبکه‌های عصبی کار راحتی نیست و نیاز به دانش عمیق برنامه‌نویسی داره.

اینجاست که Keras به عنوان یه ناجی وارد می‌شه! Keras یه کتابخونه قدرتمند برای یادگیری عمیقه که بهت این امکان رو می‌ده بدون نیاز به دانش تخصصی، مدل‌های پیچیده یادگیری عمیق رو طراحی و پیاده‌سازی کنی.

تو این مقاله، می‌خوایم با هم به دنیای شگفت‌انگیز Keras سفر کنیم و بگیم چرا این کتابخونه اینقدر بین برنامه‌نویسا و متخصصای هوش مصنوعی محبوب شده.

همراه ما باش تا با Keras، قدرت هوش مصنوعی رو تو دستات بگیری و به حل مسائل پیچیده با روشی نوین و کارآمد بپردازی!

Keras چیست؟

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

تصور کن می‌خوای یه مدل هوش مصنوعی بسازی که بتونه بین گربه و سگ توی تصاویر تفاوت قائل بشه. با Keras، نیازی به نوشتن کدهای گیج‌کننده و دست و پا گیر نداری. فقط کافیه با دستورات ساده و روان، مثل دستور پخت غذا، به Keras بگی که مدلت باید چیکار کنه و هر بخش چه وظیفه‌ای داره. Keras مثل یه مترجم عمل می‌کنه و دستوراتت رو به زبان قابل فهم برای کامپیوترها تبدیل می‌کنه. به این ترتیب، می‌تونی بدون غرق شدن توی جزئیات فنی، روی هدف اصلیت یعنی حل مسئله با کمک هوش مصنوعی تمرکز کنی.

مزایا و معایب Keras

در این بخش می‌خوایم مزایا و معایب این کتابخونه رو بررسی کنیم تا بتونی تصمیم بگیری که آیا این ابزار برای پروژه‌هات مناسب هست یا نه.

مزایای Keras

  • زمان نمونه‌سازی کوتاه: یکی دیگه از خوبی‌های Keras اینه که زمان نمونه‌سازی اولیه (پروتوتایپینگ) رو کمتر می‌کنه. این یعنی ایده‌هات خیلی سریع‌تر قابل اجرا و پیاده‌سازی می‌شن. همچنین، Keras گزینه‌های مختلفی برای پیاده‌سازی ارائه میده که بسته به نیاز کاربر، می‌تونی ازشون استفاده کنی.
  • انعطاف‌پذیری و ادغام با TensorFlow: زبان‌هایی که سطح انتزاع بالایی دارن و ویژگی‌های داخلی زیادی دارن، معمولا کندن و ساخت ویژگی‌های سفارشی توشون سخته. ولی Keras که روی TensorFlow ساخته شده، نسبتا سریعه و به خوبی با TensorFlow ادغام شده. این یعنی می‌تونی با راحتی بیشتری جریان‌های کاری سفارشی بسازی.
  • پشتیبانی گسترده و جامعه پژوهشی فعال: جامعه پژوهشی Keras خیلی گسترده و پیشرفته‌ است. مستندات و کمک‌های موجود برای Keras خیلی بیشتر و کامل‌تر از بقیه چارچوب‌های یادگیری عمیق هستن.
  • استفاده تجاری توسط شرکت‌های بزرگ: Keras توسط خیلی از شرکت‌های بزرگ مثل Netflix، Uber، Square، Yelp و غیره که محصولاتشون رو عمومی کردن، استفاده می‌شه. این نشون میده که Keras در دنیای واقعی هم خیلی کارایی داره.
  • سازگاری با CPU و GPU: این ابزار به خوبی روی هر دو پردازنده CPU و GPU کار می‌کنه.
  • پشتیبانی از همه مدل‌های شبکه عصبی: تقریباً از همه مدل‌های شبکه عصبی پشتیبانی می‌کنه.
  • ساختار مدولار: ساختار مدولار داره که باعث میشه خیلی انعطاف‌پذیر و مناسب برای تحقیقات نوآورانه باشه.
  • سادگی و راحتی در یادگیری: Keras یه API هست که واسه اینکه یاد گرفتنش راحت باشه ساخته شده و به خاطر سادگی و راحتیش معروفه. این API یه سری رابط کاربری ساده و یکپارچه داره که کارو واسه پیاده‌سازی کدهای معمولی راحت‌تر می‌کنه و اگه اشتباهی هم پیش بیاد، به راحتی بهت میگه کجا مشکل داری.

"سادگی، نهایت کمال است." – لئوناردو داوینچی

معایب Keras

  • سرعت پایین‌تر نسبت به برخی فریم‌ورک‌های دیگر: Keras به خاطر سطح بالای انتزاع و ساده‌سازی، نسبت به فریم‌ورک‌هایی مثل PyTorch که انعطاف‌پذیری بیشتری دارن، کمی کندتره.
  • انعطاف‌پذیری کمتر در مقایسه با PyTorch: برای پروژه‌های خیلی پیچیده و سفارشی، ممکنه Keras به اندازه PyTorch انعطاف‌پذیری نداشته باشه.
  • محدودیت در کنترل جزئیات پایین‌تر: اگر نیاز به کنترل دقیق‌تر و جزئی‌تر روی فرآیند یادگیری داری، ممکنه Keras انتخاب ایده‌آلی نباشه و فریم‌ورک‌های سطح پایین‌تر مثل TensorFlow Core یا PyTorch بهتر جواب بدن.

مقایسه Keras با دیگر فریم‌ورک‌ها

در این بخش می‌خوایم Keras رو با معروف‌ترین رقباش مقایسه کنیم.

TensorFlow

TensorFlow محصول گوگله و یکی از معروف‌ترین ابزارهای یادگیری عمیق به حساب میاد. این فریم‌ورک خیلی قدرتمنده و ازش برای پروژه‌های بزرگ و پیچیده استفاده می‌شه. البته، کار کردن با TensorFlow می‌تونه برای تازه‌کارها یه مقدار گیج‌کننده باشه، چون پیچیدگی‌های زیادی داره. Keras به عنوان یه رابط کاربری سطح بالا روی TensorFlow سوار می‌شه و کار باهاش رو خیلی آسون‌تر می‌کنه. با Keras می‌تونی بدون درگیر شدن با جزئیات پیچیده، از قدرت TensorFlow استفاده کنی.

PyTorch

PyTorch یه فریم‌ورک دیگه‌ست که خیلی بین محققان و دانشگاهی‌ها محبوبه. این فریم‌ورک انعطاف‌پذیری زیادی داره و اجازه می‌ده تا مدل‌ها رو به صورت داینامیک تعریف کنی. یعنی می‌تونی هر لحظه شبکه عصبیت رو تغییر بدی و این خیلی برای پروژه‌های تحقیقاتی مفیده. PyTorch هم مثل Keras رابط کاربری خوبی داره ولی به نسبت Keras یه کم پیچیده‌تره. اگه تازه‌کاری، Keras گزینه بهتریه، اما اگه دنبال انعطاف‌پذیری بیشتری هستی، PyTorch رو امتحان کن.

اگه دوست داری بیش‌تر در مورد TensorFlow و PyTorch بدونی یه سری به مقاله‌های "آموزش TENSORFLOW" و "PyTorch چیست؟" بزن.

Scikit-Learn

Scikit-Learn بیشتر برای یادگیری ماشین کلاسیک استفاده می‌شه. یعنی اگه بخوای مدل‌های ساده‌تری مثل رگرسیون، دسته‌بندی و کلاسترینگ بسازی، Scikit-Learn عالیه. این ابزار خیلی ساده و کاربرپسنده، ولی برای یادگیری عمیق به قدرت Keras یا PyTorch نمی‌رسه. می‌تونی از Scikit-Learn برای پیش‌پردازش داده‌ها استفاده کنی و بعد از Keras برای ساخت مدل‌های عمیق‌تر بهره ببری.

در مقاله جامع "آموزش Scikit-Learn در پایتون" به صورت کاربردی و عملی این کتابخونه رو بهت آموزش دادیم. پیشنهاد می‌کنم از دستش ندی!😉

Theano

Theano یه کتابخونه قدیمی‌تره که توی دانشگاه مونترال ساخته شده. این ابزار برای محاسبات عددی خیلی خوبه و از GPU برای سرعت بخشیدن به محاسبات استفاده می‌کنه. با این حال، Theano دیگه آپدیت نمی‌شه و توسعه‌دهنده‌ها به ابزارهای جدیدتری مثل TensorFlow و PyTorch روی آوردن. Keras از Theano هم پشتیبانی می‌کنه، ولی بهتره از TensorFlow به عنوان بک‌اند استفاده کنی.

CNTK

Microsoft Cognitive Toolkit (CNTK) یه فریم‌ورک دیگه‌ست که توسط مایکروسافت توسعه داده شده. این فریم‌ورک هم قدرت زیادی داره و می‌تونه مدل‌های پیچیده رو آموزش بده. CNTK بیشتر توی پروژه‌های مایکروسافت استفاده می‌شه ولی به اندازه TensorFlow یا PyTorch محبوبیت نداره. Keras با CNTK هم سازگاره و می‌تونی از این بک‌اند هم استفاده کنی.

حالا که تفاوت‌های Keras با بقیه فریم‌ورک‌ها رو فهمیدی، آماده‌ای که بیشتر باهاش کار کنی؟ Keras به خاطر سادگی و قدرتش یه انتخاب عالیه، ولی اگه پروژت پیچیده‌تر بشه یا نیاز به انعطاف بیشتری داشته باشی، می‌تونی سراغ فریم‌ورک‌های دیگه هم بری. پس ادامه مقاله رو بخون تا بیشتر با قابلیت‌های Keras آشنا بشی و ببینی چطور می‌تونی از این ابزار فوق‌العاده برای پروژه‌های یادگیری عمیقت استفاده کنی!

نصب و راه‌اندازی Keras

فرض می‌کنم که TensorFlow، Theano یا CNTK رو نصب کردید.

Keras رو می‌تونی با pip یا conda نصب کنی:

pip install keras

یا

conda install keras

بارگذاری یک دیتاست

Keras هفت دیتاست مختلف ارائه می‌ده که می‌تونی مستقیم از خود Keras بارگذاری کنی. این دیتاها شامل دیتاست‌های تصویری، قیمت خونه و نقد فیلم هستن.

توی این مقاله، ما از دیتاست MNIST استفاده می‌کنیم که شامل 70000 تصویر 28x28 خاکستری با 10 کلاس مختلفه. Keras این دیتا رو به یک مجموعه آموزشی با 60000 نمونه و یک مجموعه تست با 10000 نمونه تقسیم می‌کنه.

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

آماده‌سازی داده‌ها

برای این که تصاویر رو به یه شبکه عصبی کانولوشنی بدیم، باید داده‌ها رو به چهار بعد تبدیل کنیم. این کار رو می‌تونیم با روش reshape توی numpy انجام بدیم. همچنین داده‌ها رو به float تبدیل و نرمال‌سازی می‌کنیم.

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)

برچسب‌ها رو هم با استفاده از متد to_categorical از Keras به one-hot encoding تبدیل می‌کنیم.

from keras.utils import to_categorical
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

ساخت مدل با استفاده از API ترتیبی (Sequential API)

ساده‌ترین راه برای ساخت مدل توی Keras استفاده از API ترتیبیه که بهت اجازه می‌ده لایه‌ها رو یکی پس از دیگری بچینی. مشکل API ترتیبی اینه که اجازه نمی‌ده مدل‌هایی با ورودی یا خروجی‌های متعدد بسازی، که برای بعضی مسائل نیازه.

با این حال، API ترتیبی برای بیشتر مسائل انتخابی عالیه.

برای ساخت یه شبکه عصبی کانولوشنی، فقط کافیه یه شیء Sequential بسازی و از تابع add برای اضافه کردن لایه‌ها استفاده کنی.

from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout
model = Sequential()
model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu', input_shape=x_train.shape[1:]))
model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Dropout(rate=0.25))
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Dropout(rate=0.25))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(rate=0.5))
model.add(Dense(10, activation='softmax'))

کد بالا اول یه شیء Sequential می‌سازه و چند تا لایه کانولوشنی، مکس پولینگ و دراپ‌آوت اضافه می‌کنه. سپس خروجی رو تخت می‌کنه و اونو به یه لایه چگال و دراپ‌آوت می‌فرسته قبل از این که به لایه خروجی برسه.

ساخت مدل با استفاده از API تابعی (Functional API)

اگر می‌خوای مدلی بسازی که انعطاف‌پذیری بیشتری داشته باشه، API تابعی Keras بهترین انتخابه. این API بهت اجازه می‌ده مدل‌های پیچیده‌تری با چندین ورودی و خروجی و لایه‌های مشترک بسازی. با این حال، استفاده از API تابعی ممکنه کمی پیچیده‌تر و کمتر قابل خواندن باشه.

وقتی از API تابعی استفاده می‌کنی، باید هر لایه رو به لایه قبلی متصل کنی. این یعنی باید خروجی هر لایه رو به عنوان ورودی به لایه بعدی پاس بدی. همچنین، حتماً باید با یه لایه ورودی (Input layer) شروع کنی.

from keras.models import Model
from keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout, Input
inputs = Input(shape=x_train.shape[1:])
x = Conv2D(filters=32, kernel_size=(5,5), activation='relu')(inputs)
x = Conv2D(filters=32, kernel_size=(5,5), activation='relu')(x)
x = MaxPool2D(pool_size=(2, 2))(x)
x = Dropout(rate=0.25)(x)
x = Conv2D(filters=64, kernel_size=(3,3), activation='relu')(x)
x = Conv2D(filters=64, kernel_size=(3,3), activation='relu')(x)
x = MaxPool2D(pool_size=(2, 2))(x)
x = Dropout(rate=0.25)(x)
x = Flatten()(x)
x = Dense(256, activation='relu')(x)
x = Dropout(rate=0.5)(x)
predictions = Dense(10, activation='softmax')(x)
model = Model(inputs=inputs, outputs=predictions)

کامپایل کردن مدل

قبل از این که بتونیم مدل رو آموزش بدیم، باید فرآیند یادگیری رو تنظیم کنیم. برای این کار باید یه بهینه‌ساز (optimizer)، یه تابع خطا (loss function) و به صورت اختیاری چند معیار (metrics) مثل دقت رو مشخص کنیم.

تابع خطا معیاریه برای اندازه‌گیری این که مدل چقدر در رسیدن به هدف مشخص شده موفق بوده.

بهینه‌ساز برای کمینه‌سازی تابع خطا با به‌روزرسانی وزن‌ها با استفاده از گرادیان‌ها استفاده می‌شه.

model.compile(
    loss='categorical_crossentropy', 
    optimizer='adam', 
    metrics=['accuracy']
)

افزایش داده‌های تصویری (Augmentation)

افزایش داده‌ها یه فرایند برای ایجاد داده‌های بیشتر از داده‌های موجوده. برای تصاویر می‌تونی تغییرات کوچیکی مثل چرخوندن تصویر، زوم کردن، افزودن نویز و خیلی چیزای دیگه انجام بدی.

این کار کمک می‌کنه مدل مقاوم‌تر بشه و مشکل کمبود داده‌ها رو حل می‌کنه. Keras یه متد به اسم ImageDataGenerator داره که می‌تونی ازش برای افزایش تصاویر استفاده کنی.

from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
  rotation_range=10,
  zoom_range=0.1,
  width_shift_range=0.1,
  height_shift_range=0.1
)

این ImageDataGenerator تصاویر جدیدی ایجاد می‌کنه که چرخونده شدن، زوم شدن یا در عرض و ارتفاع تغییر مکان دادن.

آموزش مدل

حالا که مدل رو تعریف و کامپایل کردیم، وقت آموزش دادنه. معمولاً از متد fit استفاده می‌کنیم ولی چون از یه تولیدکننده داده استفاده می‌کنیم، از fit_generator استفاده می‌کنیم و تولیدکننده، داده‌های X و y، تعداد epochها و اندازه batch رو بهش پاس می‌دیم. همچنین یه مجموعه اعتبارسنجی هم بهش می‌دیم تا خطا و دقت روی هر دو مجموعه رو بررسی کنیم.

epochs = 3
batch_size = 32
history = model.fit_generator(datagen.flow(x_train, y_train, batch_size=batch_size), epochs=epochs,
                              validation_data=(x_test, y_test), steps_per_epoch=x_train.shape[0]//batch_size)

Epoch 1/5
1875/1875 [==============================] - 22s 12ms/step - loss: 0.1037 - acc: 0.9741 - val_loss: 0.0445 - val_acc: 0.9908
Epoch 2/5
1875/1875 [==============================] - 22s 12ms/step - loss: 0.0879 - acc: 0.9781 - val_loss: 0.0259 - val_acc: 0.9937
Epoch 3/5
1875/1875 [==============================] - 22s 12ms/step - loss: 0.0835 - acc: 0.9788 - val_loss: 0.0321 - val_acc: 0.9926
Epoch 4/5
1875/1875 [==============================] - 22s 12ms/step - loss: 0.0819 - acc: 0.9792 - val_loss: 0.0264 - val_acc: 0.9936
Epoch 5/5
1875/1875 [==============================] - 22s 12ms/step - loss: 0.0790 - acc: 0.9790 - val_loss: 0.0220 - val_acc: 0.9938

نمایش فرآیند آموزش

می‌تونیم دقت و خطای آموزش و تست رو برای هر epoch بصورت نموداری نمایش بدیم تا درک بهتری از عملکرد مدل داشته باشیم. دقت و خطا در طول epochها در متغیر history که هنگام آموزش دریافت کردیم ذخیره می‌شه و از Matplotlib برای نمایش این داده‌ها استفاده می‌کنیم.

import matplotlib.pyplot as plt
plt.plot(history.history['acc'], label='training accuracy')
plt.plot(history.history['val_acc'], label='testing accuracy')
plt.title('Accuracy')
plt.xlabel('epochs')
plt.ylabel('accuracy')
plt.legend()
plt.plot(history.history['loss'], label='training loss')
plt.plot(history.history['val_loss'], label='testing loss')
plt.title('Loss')
plt.xlabel('epochs')
plt.ylabel('loss')
plt.legend()

توی نمودارهای بالا می‌بینیم که مدل ما بیش‌برازش نمی‌کنه و هنوز می‌تونیم epochهای بیشتری رو آموزش بدیم چون خطای اعتبارسنجی هنوز در حال کاهشه.

حالا که با نصب و راه‌اندازی Keras آشنا شدی، وقتشه دست به کار بشی و اولین مدل یادگیری عمیق خودت رو بسازی!

مثال: ساخت یک مدل با Keras

در این بخش، قدم به قدم نحوه ساخت یه مدل ساده با استفاده از Keras رو یاد می‌گیری.

مدل Sequential

مدل Sequential ساده‌ترین نوع مدل توی Keras هست. این مدل بهت اجازه می‌ده لایه‌ها رو به ترتیب به هم متصل کنی.

قدم اول: بارگذاری داده‌ها

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

from keras.datasets import mnist
# بارگذاری دیتاست
(x_train, y_train), (x_test, y_test) = mnist.load_data()

قدم دوم: آماده‌سازی داده‌ها

تصاویر باید به فرمت مناسب برای شبکه عصبی تبدیل بشن. این شامل تغییر شکل تصاویر به چهار بعد، تبدیل داده‌ها به نوع float32 و نرمال‌سازی اوناست.

# تبدیل داده‌ها به float32 و نرمال‌سازی
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
# تغییر شکل تصاویر به چهار بعد
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)

همچنین باید برچسب‌ها رو به فرمت one-hot encoding تبدیل کنیم.

from keras.utils import to_categorical
# تبدیل برچسب‌ها به one-hot encoding
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

قدم سوم: ساخت مدل

حالا وقتشه که مدل رو بسازیم. از مدل Sequential استفاده می‌کنیم و لایه‌های مختلف رو یکی یکی به مدل اضافه می‌کنیم.

from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout
# ساخت مدل Sequential
model = Sequential()
# اضافه کردن لایه‌های کانولوشنی، مکس پولینگ و دراپ‌آوت
model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu', input_shape=x_train.shape[1:]))
model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Dropout(rate=0.25))
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Dropout(rate=0.25))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(rate=0.5))
model.add(Dense(10, activation='softmax'))

توضیح کد:

  • اول یه مدل Sequential می‌سازیم.
  • دو لایه کانولوشنی با 32 فیلتر و اندازه کرنل 5x5 اضافه می‌کنیم.
  • یه لایه MaxPooling با اندازه پنجره 2x2 و بعد یه لایه Dropout برای جلوگیری از بیش‌برازش اضافه می‌کنیم.
  • دو لایه کانولوشنی با 64 فیلتر و اندازه کرنل 3x3 اضافه می‌کنیم.
  • یه لایه MaxPooling دیگه با اندازه پنجره 2x2 و یه لایه Dropout اضافه می‌کنیم.
  • ویژگی‌های دوبعدی به یک بعدی تبدیل می‌شن (Flatten) تا آماده ورود به لایه‌های تمام‌اتصال بشن.
  • یه لایه Dense با 256 نورون و یه لایه Dropout اضافه می‌کنیم.
  • نهایتاً یه لایه Dense با 10 نورون و فعال‌سازی softmax برای پیش‌بینی کلاس‌ها اضافه می‌کنیم.

قدم چهارم: کامپایل کردن مدل

قبل از این که مدل رو آموزش بدیم، باید اون رو کامپایل کنیم. برای این کار، یه بهینه‌ساز (optimizer)، یه تابع خطا (loss function) و معیار دقت (accuracy) رو مشخص می‌کنیم.

# کامپایل کردن مدل
model.compile(
    loss='categorical_crossentropy', 
    optimizer='adam', 
    metrics=['accuracy']
)

قدم پنجم: آموزش مدل

حالا وقتشه که مدل رو با داده‌های آموزشی تمرین بدیم. از متد fit برای آموزش مدل استفاده می‌کنیم.

# آموزش مدل
model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=10, batch_size=200, verbose=2)

توضیح کد:

  • مدل رو برای 10 دوره (epochs) آموزش می‌دیم.
  • اندازه بسته (batch size) رو 200 تعیین می‌کنیم.
  • داده‌های تست رو برای ارزیابی مدل در طول آموزش استفاده می‌کنیم.
  • verbose=2 به معنی نمایش خلاصه‌وار اطلاعات آموزش در هر دوره است.

قدم ششم: ارزیابی مدل

در نهایت، مدل رو با داده‌های تست ارزیابی می‌کنیم تا دقت اون رو ببینیم.

# ارزیابی مدل
scores = model.evaluate(x_test, y_test, verbose=0)
print(f'Accuracy: {scores[1] * 100}%')

این کد دقت مدل رو روی داده‌های تست چاپ می‌کنه.

دیدی چقدر راحت می‌تونی با Keras یه مدل یادگیری عمیق بسازی؟😉 این فقط یکی از روش‌های ساخت مدل بود. با Keras می‌تونی مدل‌های پیچیده‌تر و انعطاف‌پذیرتری هم بسازی. حالا وقتشه که دست به کار بشی و مدل‌های خودت رو بسازی!

سوالات متداول

1. Keras برای چه نوع پروژه‌هایی مناسب است؟

Keras برای پروژه‌هایی که نیاز به ساخت و آموزش مدل‌های یادگیری عمیق دارن و همچنین برای کسانی که تازه وارد دنیای یادگیری ماشین شدن خیلی مناسبه.

2. آیا می‌توانم از Keras با PyTorch استفاده کنم؟

خیر، Keras به طور مستقیم با PyTorch کار نمی‌کنه. Keras بیشتر با TensorFlow، Theano و CNTK سازگاره.

3. چطور می‌توانم مدل Keras خود را ذخیره کنم؟

می‌تونی از روش model.save برای ذخیره مدل استفاده کنی. مثلاً:

model.save('my_model.h5')

4. چطور می‌توانم مدل ذخیره شده خود را بارگذاری کنم؟

برای بارگذاری مدل ذخیره شده می‌تونی از keras.models.load_model استفاده کنی:

from keras.models import load_model
model = load_model('my_model.h5')

5. آیا Keras برای یادگیری ماشین کلاسیک هم مناسب است؟

Keras بیشتر برای یادگیری عمیق مناسبه، ولی می‌تونی از اون برای برخی پروژه‌های یادگیری ماشین کلاسیک هم استفاده کنی.

جمع‌بندی

Keras یکی از بهترین ابزارها برای ورود به دنیای یادگیری ماشین و ساخت مدل‌های یادگیری عمیق هست. با سادگی و انعطاف‌پذیریش، به شما این امکان رو می‌ده که بدون سردرگمی و پیچیدگی‌های اضافی، مدل‌های خودتون رو بسازید و آزمایش کنید. چه تازه‌کار باشید و چه یک حرفه‌ای، Keras ابزاریست که به شما کمک می‌کنه تا سریع‌تر و بهتر مدل‌های خودتون رو توسعه بدید.

یادت باشه که یادگیری ماشین یک سفره و Keras می‌تونه بهترین همراه برای این سفر باشه. پس شروع کن و از این ابزار فوق‌العاده برای ساختن آینده‌ای هوشمندتر استفاده کن.

"یادگیری ماشین آینده‌ی دنیای تکنولوژی است و Keras یکی از دروازه‌های ورود به این آینده است." – ناشناس

۰ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
  • Keras چیست؟
  • مزایا و معایب Keras
  • مقایسه Keras با دیگر فریم‌ورک‌ها
  • نصب و راه‌اندازی Keras
  • مثال: ساخت یک مدل با Keras
  • سوالات متداول
  • جمع‌بندی
اشتراک گذاری مقاله در :