در این مقاله، یک برگه تقلب کراس (Keras Cheat-Sheet) ارائه میدهیم که ویژگیها و توابع کلیدی این کتابخانه را برجسته میکند. این برگه تقلب راهنمای مفیدی خواهد بود تا به شما کمک کند مدلهای یادگیری عمیق را بهراحتی بسازید؛ این راهنما همه چیز را از راهاندازی مدلها گرفته تا آموزش و بهبود آنها پوشش میدهد.
یادگیری عمیق (Deep Learning) با کمک به سیستمها برای یادگیری از دادهها و اتخاذ تصمیمات هوشمندانه بدون برنامهنویسی مستقیم، در حال متحول کردن بسیاری از صنایع است. این فناوری نحوه فعالیت شرکتها را در صنایعی از جمله مراقبتهای بهداشتی (healthcare)، سرگرمی (entertainment) و غیره تغییر داده و به ارائهی راهحلهای نوآورانه و خودکارسازی منجر شده است. در این صنعت بهسرعت در حال رشد، داشتن ابزارهای مناسب برای ساخت مدلهای قدرتمند بسیار حیاتی است. کراس (Keras) یکی از پرکاربردترین و کاربرپسندترین فناوریهای یادگیری عمیق در پایتون است. کراس به دلیل سهولت در استفاده و انعطافپذیری بالا در ساخت، آموزش و بهکارگیری شبکههای عصبی قدرتمند، هم در میان مبتدیان و هم در میان متخصصان محبوبیت زیادی دارد.

برگه تقلب کراس (Keras Cheat-Sheet)
Keras چیست؟
کراس (Keras) یک کتابخانه با کاربری آسان برای ساخت و آموزش مدلهای یادگیری عمیق است. این کتابخانه روشی ساده را برای ساخت شبکههای عصبی پیچیده، بدون درگیر شدن با جزئیات فنی سخت و پیچیده ارائه میدهد. در نسخه Keras 3، این کتابخانه بهصورت چند-بکانده (Multi-backend) درآمده و علاوه بر تنسورفلو (TensorFlow)، از پایتورچ (PyTorch) و جکس (JAX) نیز پشتیبانی میکند. طراحی واضح و سرراست کراس، آن را به انتخابی محبوب برای مبتدیان و متخصصانی تبدیل کرده است که میخواهند ایدههای جدید خود را در یادگیری عمیق بهسرعت پیادهسازی و آزمایش کنند.
کراس (Keras) کتابخانهای با کاربری آسان برای ساخت و آموزش شبکههای عصبی است. این کتابخانه به ساخت مدلهای پیچیده برای کارهایی مانند بینایی کامپیوتر، پردازش زبان طبیعی و موارد دیگر کمک میکند. کراس روشهای سادهای را برای طراحی مدلها با استفاده از دو نوع ابزار اصلی ارائه میدهد: Sequential (برای مدلهای پایه) و Functional (برای مدلهای پیچیدهتر).
برای یادگیری کراس و تنسورفلو به آموزش رایگان یادگیری عمیق و شبکه عصبی مراجعه کنید.
Download the Cheat-Sheet here: Keras Cheat-Sheet
ساخت مدل
| تابع | توضیحات |
|---|---|
Sequential() |
یک پشته خطی از لایهها را ایجاد میکند که برای مدلهای ساده کاربرد دارد. |
Model() |
برای ساخت مدلی انعطافپذیرتر با مشخص کردن ورودیها و خروجیها استفاده میشود. |
انواع لایهها
| تابع | توضیحات |
|---|---|
Dense() |
یک لایه تماماً متصل (fully connected) ایجاد میکند که در آن هر نورون به تمام نورونهای لایه قبلی متصل است. |
Conv2D() |
یک لایه کانولوشنی دوبعدی (2D convolutional) ایجاد میکند که برای پردازش تصاویر استفاده میشود. |
MaxPooling2D() |
عملیات بیشینهسازی (max pooling) را انجام میدهد که باعث کاهش ابعاد دادهها میشود. |
LSTM() |
یک لایه LSTM (حافظه طولانی کوتاهمدت) ایجاد میکند که برای دادههای متوالی مانند متن مفید است. |
Dropout() |
برای جلوگیری از بیشبرازش (overfitting)، منظمسازی حذف تصادفی (dropout) را با صفر کردن تصادفی بخشی از ورودیها اعمال میکند. |
Embedding() |
یک لایه جاسازی (embedding) ایجاد میکند که برای کار با دادههای دستهبندیشده یا متوالی مانند کلمات مفید است. |
Flatten() |
دادههای ورودی را مسطح (flatten) میکند؛ معمولاً برای تبدیل خروجی لایههای کانولوشنی به یک آرایه یکبعدی (1D) جهت استفاده در لایههای تماماً متصل به کار میرود. |
GlobalAveragePooling2D() |
یک میانگینگیری کلی (global average pooling) روی دادههای دوبعدی اعمال میکند و با میانگینگیری در تمام ابعاد مکانی، اندازه را کاهش میدهد. |
Concatenate() |
چندین مدل یا لایه را در یک لایه ادغام میکند. |
آموزش مدل
| تابع | توضیحات |
|---|---|
compile() |
مدل را برای آموزش با مشخص کردن بهینهساز (optimizer)، تابع زیان (loss function) و معیارهای ارزیابی (metrics) پیکربندی میکند. |
fit() |
مدل را روی دادههای ورودی برای تعداد مشخصی از دورهها (epochs) آموزش میدهد. |
evaluate() |
عملکرد مدل را روی یک مجموعه داده ارزیابی کرده و میزان زیان (loss) و معیارهای ارزیابی را بازمیگرداند. |
predict() |
از یک مدل آموزشدیده برای پیشبینی روی دادههای جدید استفاده میکند. |
train_on_batch() |
مدل را در هر بار روی یک دسته (batch) از دادهها آموزش میدهد. |
test_on_batch() |
مدل را روی یک دسته (batch) واحد از دادهها تست میکند. |
کالبکها (Callbacks)
| تابع | توضیحات |
|---|---|
EarlyStopping() |
آموزش مدل را زمانی که بهبود یک معیار نظارتشده متوقف میشود، زودتر از موعد خاتمه میدهد. |
ModelCheckpoint() |
مدل را پس از هر دوره (epoch) در صورت بهبود ذخیره میکند که برای ادامه آموزش در آینده مفید است. |
ReduceLROnPlateau() |
نرخ یادگیری (learning rate) را زمانی که روند بهبود یک معیار متوقف میشود، کاهش میدهد. |
TensorBoard() |
معیارهای آموزش را برای تصویرسازی در TensorBoard ثبت (log) میکند که برای ردیابی روند پیشرفت مدل کاربرد دارد. |
توابع زیان (Loss Functions)
| تابع | توضیحات |
|---|---|
binary_crossentropy() |
تابع زیان کراسانتروپی باینری (binary cross-entropy) را محاسبه میکند که برای مسئلههای دستهبندی دوتایی کاربرد دارد. |
categorical_crossentropy() |
تابع زیان کراسانتروپی چندکلاسه (categorical cross-entropy) را محاسبه میکند که برای مسئلههای دستهبندی چندکلاسه کاربرد دارد. |
mean_squared_error() |
تابع زیان میانگین مجذور خطا (mean squared error) را محاسبه میکند که برای مسئلههای رگرسیون استفاده میشود. |
معیارها (Metrics)
| تابع | توضیحات |
|---|---|
accuracy() |
دقت (accuracy) مدل را محاسبه میکند که اغلب برای مسئلههای دستهبندی کاربرد دارد. |
AUC() |
سطح زیر منحنی ROC را محاسبه میکند که در مسئلههای دستهبندی دوتایی استفاده میشود. |
تمرین عملی با Keras
وارد کردن Keras
در Keras 3 نیازی به وارد کردن از طریق TensorFlow نیست و میتوانید مستقیماً از ماژول `keras` استفاده کنید.
import keras from keras.models import Sequential, Model
from keras.layers import Input, Dense, Activation, Flatten, Conv2D, MaxPooling2D, LSTM from keras.optimizers import Adam, SGD from keras.callbacks import EarlyStopping
ساخت مدل
الف. مدل ترتیبی (Sequential): برای پشتههای ساده و خطی از لایهها استفاده میشود که در آن هر لایه دقیقاً یک ورودی و یک خروجی دارد.
model = Sequential()
ب. مدل کاربردی (Functional): امکان ساخت معماریهای پیچیدهتر، مانند چند ورودی یا خروجی، یا لایههای مشترک در سراسر شبکه را فراهم میکند.
inputs = Input(shape=(input_shape,))
x = Dense(64)(inputs)\noutputs = Dense(1)(x) model = Model(inputs=inputs, outputs=outputs)
افزودن لایهها
الف. لایه متراکم (Dense): یک لایه کاملاً متصل که در آن هر نورون به تمام نورونهای لایه قبل متصل است. بهتر است شکل ورودی را با `Input` مشخص کنید.
model.add(Input(shape=(input_size,))) model.add(Dense(units=64, activation='relu'))
ب. لایه کانولوشنی (Conv2D): در شبکههای عصبی کانولوشنی (CNN) برای پردازش دادههای تصویری استفاده میشود.
model.add(Input(shape=(height, width, channels))) model.add(Conv2D(filters=32, kernel_size=(3,3), activation='relu'))
ج. لایه بیشینهسازی پویا (MaxPooling2D): ابعاد مکانی تصویر را کاهش میدهد و زمان محاسبات را کم میکند.
model.add(MaxPooling2D(pool_size=(2, 2)))
د. لایه مسطحساز (Flatten): دادههای چندبعدی را به یک بردار یکبعدی تبدیل میکند.
model.add(Flatten())
کامپایل مدل
این مرحله مدل را برای آموزش پیکربندی میکند؛ به این صورت که بهینهساز (که وزنها را تنظیم میکند)، تابع زیان (که میزان انحراف پیشبینیها را محاسبه میکند) و معیارها (که عملکرد مدل را در طول آموزش ارزیابی میکنند) مشخص میشوند.
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
آموزش مدل
این مرحله مدل را با استفاده از دادههای ورودی (X_train) و برچسبهای متناظر (y_train) آموزش میدهد.
history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))
ارزیابی مدل
پس از آموزش، این مرحله میزان عملکرد مدل را روی دادههای تست (X_test, y_test) اندازهگیری میکند.
loss, accuracy = model.evaluate(X_test, y_test)
پیشبینی مدل
پس از آموزش مدل، میتوانید از آن برای پیشبینی خروجی دادههای جدید یا دیدهنشده استفاده کنید.
predictions = model.predict(X_input)
کالبکها (Callbacks)
توقف زودرس (Early Stopping): اگر بهبود عملکرد مدل روی مجموعه اعتبارسنجی متوقف شود، آموزش را متوقف میکند.
early_stop = EarlyStopping(monitor='val_loss', patience=5)
افزایش دادهها (Data Augmentation)
در کراس ۳ از لایههای پیشپردازش تصویر برای افزایش دادهها (مانند چرخش یا جابهجایی تصادفی) استفاده میشود که مستقیماً داخل مدل قرار میگیرند و نیاز به ژنراتورهای خارجی را از بین میبرند.
from keras.layers import RandomRotation, RandomTranslation
data_augmentation = Sequential([
RandomRotation(factor=0.2),
RandomTranslation(height_factor=0.2, width_factor=0.2)
])
model.add(data_augmentation)
ذخیره و بارگذاری مدلها
الف. ذخیره مدل: در Keras 3 فرمت پیشنهادی `.keras` است که کل مدل را بهخوبی ذخیره میکند.
model.save('model.keras')
ب. بارگذاری مدل: این کار مدل ذخیرهشده را برای پیشبینی یا آموزش بیشتر بارگذاری میکند.
from keras.models import load_model
model = load_model('model.keras')
تابع زیان سفارشی
در Keras 3 برای حفظ قابلیت اجرا در بکاندهای مختلف (TensorFlow, PyTorch, JAX) از `keras.ops` استفاده میشود.
import keras from keras import ops
def custom_loss(y_true, y_pred):
return ops.mean(ops.square(y_true - y_pred))
لایه سفارشی
اگر به یک عملیات منحصربهفرد نیاز دارید، میتوانید یک لایه سفارشی تعریف کنید.
from keras import layers
class CustomLayer(layers.Layer):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def call(self, inputs):
return inputs * 2
ذخیره وزنهای مدل
این کار فقط وزنهای مدل آموزشدیده را ذخیره میکند. در Keras 3 فرمت استاندارد `.weights.h5` است.
model.save_weights('model_weights.weights.h5')
بارگذاری وزنهای مدل
این کار وزنهای ذخیرهشده را در یک مدل بارگذاری میکند.
model.load_weights('model_weights.weights.h5')
بهینهسازها
الف. بهینهساز Adam: یک بهینهساز محبوب که مزایای سایر بهینهسازها مانند AdaGrad و RMSProp را با هم ترکیب میکند.
optimizer = Adam(learning_rate=0.001)
ب. بهینهساز SGD: یک بهینهساز سنتی که برای کمک به شتابدهی همگرایی، میتوان ممانتوم را اضافه کرد.
optimizer = SGD(learning_rate=0.01, momentum=0.9)
نتیجهگیری
در نهایت، کراس (Keras) ابزاری کاربرپسند و قدرتمند برای ساخت و آموزش مدلهای یادگیری عمیق است. این کتابخانه کارهای پیچیدهای مانند ساخت، آموزش و بهبود مدلها را بسیار آسانتر میکند. چه تازه کار خود را شروع کرده باشید و چه فردی باسابقه باشید، کراس با ارائه لایههای متنوع، روشهای بهینهسازی گوناگون و ابزارهای مختلف برای ارتقای مدلها، گزینههای متعددی را پیش روی شما میگذارد. کراس در نسخه ۳ با استقلال از تنسورفلو و امکان اجرا روی PyTorch و JAX، انعطافپذیری فوقالعادهای به شما میدهد. فرقی نمیکند روی دادههای تصویری، متنی یا هر نوع داده دیگری کار میکنید؛ کراس امکان ساخت و آزمایش سریع مدلها را برای شما فراهم میکند و همین موضوع آن را به انتخابی محبوب برای پروژههای یادگیری عمیق تبدیل کرده است. برگه تقلب keras را دم دستتات بگذارید!
سوالات متداول
۱. کراس (Keras) چیست و چه تفاوتی با تنسورفلو (TensorFlow) دارد؟
کراس یک API سطح بالا و کاربرپسند برای یادگیری عمیق در پایتون است. در Keras 3 این کتابخانه میتواند بر پایه تنسورفلو، پایتورچ یا جکس اجرا شود؛ به این معنا که کراس فرآیند کدنویسی و ساخت مدل را ساده میکند، در حالی که فریمورکهای زیرین عملیات سنگین محاسباتی را در پسزمینه انجام میدهند.
۲. تفاوت اصلی بین مدلهای ترتیبی (Sequential) و کاربردی (Functional) در کراس چیست؟
مدل Sequential برای ساخت لایههای ساده و خطی که هر لایه دقیقاً یک ورودی و خروجی دارد استفاده میشود. اما مدل Functional انعطافپذیری بسیار بیشتری دارد و برای طراحی شبکههای پیچیدهتر با چندین ورودی، خروجی یا لایههای مشترک به کار میرود.
۳. کالبک توقف زودرس (Early Stopping) چه کمکی به بهینهسازی آموزش مدل میکند؟
این کالبک روند آموزش مدل را بررسی میکند و در صورتی که بهبودی در عملکرد روی دادههای اعتبارسنجی حاصل نشود، فرآیند آموزش را بهطور خودکار متوقف میکند. این کار از مشکل بیشبرازش (Overfitting) جلوگیری کرده و زمان محاسبات را کاهش میدهد.
۴. آیا میتوان در کراس از توابع زیان و لایههای سفارشی استفاده کرد؟
بله، کراس بسیار انعطافپذیر است و با استفاده از `keras.ops` در کراس ۳ به شما اجازه میدهد تا توابع، لایهها و معیارهای ارزیابی دلخواه خود را بسازید که با هر بکاندی (TensorFlow, PyTorch, JAX) سازگار باشند.
به یک معمار تمامعیار در هوش مصنوعی تبدیل شوید!
داشتن یک برگه تقلب keras سرعت شما را در کدنویسی چند برابر میکند؛ اما برای بقا و درخشش در دنیای رقابتی امروز، صرفاً کپی کردن چند خط کد کافی نیست. برای اینکه بتوانید پروژههای صنعتی و واقعی را از صفر طراحی کنید، باید بدانید پشت هر لایه شبکه عصبی چه میگذرد و چگونه ابزارهای مختلف را برای حل مسائل پیچیده کسبوکارها در کنار هم قرار دهید.
اگر آمادهاید تا از سطح یک اپراتور کد فراتر بروید و به یک متخصص مستقل تبدیل شوید، دوره های آموزش هوش مصنوعی را در صفحه آموزش هوش مصنوعی با پایتون دنبال کنید دقیقاً همان نقشه راهی است که شما را از اصول پایهای پایتون و ریاضیات، به پیشرفتهترین مباحث یادگیری عمیق، پردازش تصویر و مدلهای زبانی میرساند.
- یادگیری یکپارچه و گامبهگام: پوشش کامل مسیر از پایتون مقدماتی و علم داده تا یادگیری عمیق و بینایی کامپیوتر.
- تمرکز روی پروژههای بازار کار: یادگیری سناریوهای واقعی و حل مسائلی که شرکتهای بزرگ برای آنها هزینه میکنند.
- مناسب برای همه سطوح: طراحی شده برای مبتدیان بدون پیشنیاز، و متخصصانی که به دنبال ارتقای مهارتهای خود هستند.

