پروژه یادگیری عمیق در پایتون با Keras به صورت گام به گام

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

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

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

بیایید شروع کنیم.

آموزش Keras

کد زیادی مورد نیاز نیست ، اما ما کمی توضیح خواهیم داد تا در آینده بدانید که چگونه مدل‌های خود را بسازید.

مراحلی که قرار است در این آموزش طی کنید به شرح زیر است:

نیازمندی های این آموزش کراس :

  • Python 2 یا ۳ را نصب و پیکربندی کرده باشید.
  • SciPy ( به همراه NumPy) را نصب و پیکربندی کرده باشید.
  • Keras و یک backend (Theano یا TensorFlow) را نصب و پیکربندی کرده باشید.

اگر در زمینه محیط به کمک نیاز دارید ، به آموزش زیر مراجعه کنید:

نحوه تنظیم محیط پایتون برای یادگیری عمیق

یک فایل جدید به نام keras_first_network.py ایجاد کنید و کد را در آن تایپ یا کپی کنید.

۱- بارگذاری داده ها

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

ما برای بارگذاری مجموعه داده خود از کتابخانه NumPy استفاده خواهیم کرد و برای تعریف مدل خود از دو کلاس از کتابخانه Keras استفاده خواهیم کرد.

کتابخانه های مورد نیاز در زیر ذکر شده است.

# first neural network with keras tutorial
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
...

اکنون می توانیم مجموعه داده خود را بارگیری کنیم.

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

به همین ترتیب ، این یک مشکل طبقه بندی باینری است (شروع دیابت ۱ یا نه ۰). تمام متغیرهای ورودی که هر بیمار را توصیف می کنند ، عددی هستند. این امر استفاده از آن را با استفاده از شبکه های عصبی که انتظار مقادیر ورودی و خروجی عددی را دارند و برای اولین شبکه عصبی ما در کراس ایده آل است.

مجموعه داده را از آدرس زیر می توانید دانلود کنید:

پرونده Dataset CSV (pima-indians-diabet.csv)

جزئیات مجموعه داده

مجموعه داده را بارگیری کرده و در فهرست محلی کار خود ، همان مکان فایل پایتون ، قرار دهید.

آن را با نام پرونده ذخیره کنید:

pima-indians-diabetes.csv

به داخل پرونده نگاهی بیندازید ، باید ردیف های داده ای مانند موارد زیر را مشاهده کنید:

۶,۱۴۸,۷۲,۳۵,۰,۳۳٫۶,۰٫۶۲۷,۵۰,۱
۱,۸۵,۶۶,۲۹,۰,۲۶٫۶,۰٫۳۵۱,۳۱,۰
۸,۱۸۳,۶۴,۰,۰,۲۳٫۳,۰٫۶۷۲,۳۲,۱
۱,۸۹,۶۶,۲۳,۹۴,۲۸٫۱,۰٫۱۶۷,۲۱,۰
۰,۱۳۷,۴۰,۳۵,۱۶۸,۴۳٫۱,۲٫۲۸۸,۳۳,۱
...

اکنون می توانیم پرونده را با استفاده از تابع loadtxt() در NumPy به صورت ماتریس اعداد بارگیری کنیم.

هشت متغیر ورودی و یک متغیر خروجی وجود دارد (ستون آخر). ما در حال یادگیری مدلی برای ترسیم ردیف متغیرهای ورودی (X) به یک متغیر خروجی (y) خواهیم بود ، که اغلب آنها را به صورت y = f (X) خلاصه می کنیم.

متغیرها را می توان به صورت زیر خلاصه کرد:

متغیرهای ورودی (X):

  • تعداد دفعات بارداری
  • غلظت گلوکز پلاسما ۲ ساعت در یک تست تحمل گلوکز خوراکی
  • فشار خون دیاستولیک (میلی متر جیوه)
  • ضخامت چین خوردگی پوست عضلات سه سر (میلی متر)
  • انسولین سرمی ۲ ساعته (mu U/ml)
  • شاخص توده بدن (وزن در کیلوگرم / (قد در متر) ^ ۲)
  • عملکرد شجره نامه دیابت
  • سن (سال)

متغیرهای خروجی (y):

  • متغیر کلاس (۰ یا ۱)

پس از بارگذاری پرونده CSV در حافظه ، می توانیم ستون های داده را به متغیرهای ورودی و خروجی تقسیم کنیم.

داده ها در یک آرایه ۲ بعدی ذخیره می شوند که در آن بعد اول ردیف ها و بعد دوم ستون ها هستند ، به عنوان مثال. [rows, columns] .

ما می توانیم با انتخاب زیر مجموعه ستون ها با استفاده از عملگر برش استاندارد NumPy یا ” : ” آرایه را به دو آرایه تقسیم کنیم. از طریق برش ۸: ۰ می توانیم ۸ ستون اول را از شاخص ۰ به نمایه ۷ انتخاب کنیم. سپس می توانیم ستون خروجی (متغیر ۹) را از طریق شاخص ۸ انتخاب کنیم.

...
# load the dataset
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',')
# split into input (X) and output (y) variables
X = dataset[:,0:8]
y = dataset[:,8]
...

اکنون آماده ایم مدل شبکه عصبی خود را تعریف کنیم.

توجه داشته باشید ، مجموعه داده دارای ۹ ستون است و دامنه ۰:۸ ستون ها را از ۰ تا ۷ انتخاب می کند ، قبل از شاخص ۸ متوقف می شود.

۲- مدل Keras را تعریف کنید

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

ما یک مدل Sequential ایجاد می کنیم و لایه ها را یکی یکی اضافه می کنیم تا اینکه از معماری شبکه خود راضی باشیم.

اولین چیزی که باید درست شود اطمینان از این است که لایه ورودی از تعداد ورودی های مناسب برخوردار باشد. این را می توان هنگام ایجاد اولین لایه با آرگومان input_dim و تنظیم آن روی ۸ برای ۸ متغیر ورودی ، تعیین کرد.

چگونه تعداد لایه ها و انواع آن ها را بدانیم؟

این سوال بسیار سختی است. روش های ابتکاری وجود دارد که می توانیم از آن ها استفاده کنیم و غالباً بهترین ساختار شبکه از طریق یک آزمایش آزمون و خطا یافت می شود . به طور کلی ، شما به یک شبکه به اندازه کافی بزرگ نیاز دارید تا ساختار مشکل را درک کنید.

در این مثال ، ما از یک ساختار شبکه کاملاً متصل با سه لایه استفاده خواهیم کرد.

لایه های کاملاً متصل با استفاده از کلاس Dense تعریف می شوند. می توانیم تعداد نورون ها یا گره های موجود در لایه را به عنوان اولین آرگومان مشخص کنیم و با استفاده از آرگومان فعال سازی ، تابع فعال سازی را مشخص کنیم.

ما از تابع فعال سازی واحد خطی اصلاح شده در دو لایه اول و تابع Sigmoid در لایه خروجی استفاده می کنیم.

قبلاً اینگونه بود که توابع فعال سازی Sigmoid و Tanh برای همه لایه ها ترجیح داده می شدند. این روزها با استفاده از تابع فعال سازی ReLU عملکرد بهتری حاصل می شود. ما برای اطمینان از اینکه خروجی شبکه ما بین ۰ تا ۱ است ، از Sigmoid استفاده می کنیم و نقشه برداری به راحتی از کلاس ۱ یا به یک طبقه بندی سخت از هر دو کلاس با آستانه پیش فرض ۰٫۵ ، آسان است.

با افزودن هر لایه می توانیم همه آن ها را با هم تکه تکه کنیم:

  • مدل انتظار دارد ردیف های داده با ۸ متغیر (استدلال input_dim = 8) داشته باشد.
  • اولین لایه مخفی دارای ۱۲ گره است و از عملکرد فعال سازی relu استفاده می کند.
  • لایه مخفی دوم دارای ۸ گره است و از عملکرد فعال سازی relu استفاده می کند.
  • لایه خروجی دارای یک گره است و از عملکرد فعال سازی Sigmoid استفاده می کند.
...
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
...

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

۳- مدل Keras را کامپایل کنید

اکنون که مدل تعریف شد ، می توانیم آن را کامپایل کنیم.

در تدوین مدل از کتابخانه های عددی کارآمد در زیر پوشش (اصطلاحاً باطن) مانند Theano یا TensorFlow استفاده می شود. Backend به طور خودکار بهترین روش را برای نمایش شبکه برای آموزش و پیش بینی برای اجرا بر روی سخت افزار شما مانند CPU یا GPU یا حتی توزیع شده انتخاب می کند.

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

ما باید تابع loss (تابع زیان) را تعیین کنیم تا از آن برای ارزیابی مجموعه ای از وزن استفاده شود ، از بهینه ساز برای جستجوی در وزن های مختلف شبکه و هر معیار اختیاری استفاده می شود که می خواهیم در طول آموزش جمع آوری و گزارش دهیم.

در این حالت ، از آنتروپی متقابل به عنوان استدلال ضرر استفاده خواهیم کرد. این از دست دادن برای مشکلات طبقه بندی باینری است و در Keras به عنوان “باینری_ کراسنروپی” تعریف شده است.

ما بهینه ساز را به عنوان الگوریتم فرود شیب تصادفی کارآمد “adam” تعریف خواهیم کرد. این یک نسخه محبوب از شیب نزولی است زیرا به طور خودکار خود را تنظیم می کند و در طیف گسترده ای از مشکلات نتایج خوبی می دهد.

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

...
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
...

۴- Fit کردن با مدل Keras

ما مدل خود را تعریف کرده و آن را برای محاسبه کارآمد آماده کرده ایم.

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

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

آموزش در دوره های مختلف رخ می دهد و هر دوره به چند دسته تقسیم می شود.

  • Epoch : یک ردیف از مجموعه داده های آموزشی را تعریف می کند.
  • Batch : یک یا چند نمونه قبل از به روزرسانی وزن ، توسط مدل در یک دوره در نظر گرفته شده است.

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

روند آموزش برای تعداد مشخصی از تکرارها از طریق مجموعه داده ای به نام epochs اجرا می شود که باید آن ها را با استفاده از آرگومان epochs مشخص کنیم. همچنین باید تعداد ردیف های داده را تنظیم کنیم که قبل از به روزرسانی وزن مدل ها در هر دوره در نظر گرفته می شوند ، اندازه دسته ای نامیده می شوند و با استفاده از آرگومان batch_size تنظیم می شوند.

برای این مشکل ، ما برای تعداد کمی دوره (۱۵۰) اجرا خواهیم کرد و از اندازه دسته ای نسبتاً کم ۱۰ استفاده خواهیم کرد.

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

...
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10)
...

این جایی است که کار روی CPU یا GPU شما اتفاق می افتد.

برای این مثال GPU مورد نیاز نیست .

۵- مدل Keras را ارزیابی کنید

ما شبکه عصبی خود را در کل مجموعه داده آموزش داده ایم و می توانیم عملکرد شبکه را در همان مجموعه داده ارزیابی کنیم.

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

شما می توانید با استفاده از تابع () evaluate بر روی مدل خود مدل خود را بر روی مجموعه داده های آموزشی خود ارزیابی کرده و از همان ورودی و خروجی استفاده شده برای آموزش مدل استفاده کنید.

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

تابع evaluate() لیستی را با دو مقدار برمی گرداند. مورد اول زیان مدل روی مجموعه داده و دوم دقت مدل روی مجموعه داده خواهد بود. ما فقط علاقه مند به گزارش صحت هستیم ، بنابراین مقدار ضرر را نادیده می گیریم.

...
# evaluate the keras model
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))

۶- همه را با هم تجمیع کنید

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

بیایید همه را با هم در یک مثال کدنویسی کامل گره بزنیم.

# first neural network with keras tutorial
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
# load the dataset
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',')
# split into input (X) and output (y) variables
X = dataset[:,0:8]
y = dataset[:,8]
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10)
# evaluate the keras model
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))

می توانید همه کدها را در پرونده Python خود کپی کرده و با عنوان “keras_first_network.py” در همان دایرکتوری پرونده داده “pima-indians-diabet.csv” ذخیره کنید. سپس می توانید فایل پایتون را به صورت اسکریپت از خط فرمان خود به شرح زیر اجرا کنید:

python keras_first_network.py

با اجرای این مثال ، باید پیامی را برای هر ۱۵۰ دوره مشاهده کنید که میزان زیان و دقت را چاپ می کند و به دنبال آن ارزیابی نهایی مدل آموزش داده شده روی مجموعه داده های آموزشی است.

حدود ۱۰ ثانیه طول می کشد تا در سیستم من که روی CPU کار می کند ، اجرا شود.

در حالت ایده آل ، ما می خواهیم ضرر به صفر برسد و دقت به ۱٫۰ (مثلاً ۱۰۰٪) برسد. این مسئله برای هیچ یک از پیش پا افتاده ترین مشکلات یادگیری ماشین امکان پذیر نیست. در عوض ، ما همیشه در مدل خود مقداری خطا خواهیم داشت. هدف این است که یک پیکربندی مدل انتخاب کنید و مدل را برای دستیابی به کمترین افت و بالاترین دقت ممکن برای یک مجموعه داده مشخص ، آموزش دهید.

...
۷۶۸/۷۶۸ [==============================] - ۰s 63us/step - loss: 0.4817 - acc: 0.7708
Epoch 147/150
۷۶۸/۷۶۸ [==============================] - ۰s 63us/step - loss: 0.4764 - acc: 0.7747
Epoch 148/150
۷۶۸/۷۶۸ [==============================] - ۰s 63us/step - loss: 0.4737 - acc: 0.7682
Epoch 149/150
۷۶۸/۷۶۸ [==============================] - ۰s 64us/step - loss: 0.4730 - acc: 0.7747
Epoch 150/150
۷۶۸/۷۶۸ [==============================] - ۰s 63us/step - loss: 0.4754 - acc: 0.7799
۷۶۸/۷۶۸ [==============================] - ۰s 38us/step
Accuracy: 76.56

توجه داشته باشید ، اگر این مثال را در نوت بوک IPython یا Jupyter اجرا کنید ، ممکن است خطا دریافت شود.

دلیل آن میله های پیشرفت خروجی در حین آموزش است. با تنظیم verbose = 0 در فراخوانی توابع fit () و evaluate () می توانید به راحتی این موارد را کم کنید ، به عنوان مثال:

...
# fit the keras model on the dataset without progress bars
model.fit(X, y, epochs=150, batch_size=10, verbose=0)
# evaluate the keras model
_, accuracy = model.evaluate(X, y, verbose=0)
...

توجه: نتایج شما ممکن است با توجه به ماهیت تصادفی الگوریتم یا روش ارزیابی ، یا تفاوت در دقت عددی متفاوت باشد. چند بار اجرای مثال را در نظر بگیرید و نتیجه متوسط را مقایسه کنید.

چه نتیجه ای گرفتید؟

نتایج خود را در نظرات ارسال کنید.

شبکه های عصبی یک الگوریتم تصادفی است ، به این معنی که الگوریتم مشابه روی داده های مشابه می تواند هر بار که کد اجرا می شود ، مدل دیگری را با مهارت متفاوت تربیت کند. این یک ویژگی است ، نه یک اشکال.

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

به عنوان مثال ، در زیر ۵ بار نمره دقت در اجرای مجدد مثال آورده شده است:

Accuracy: 75.00
Accuracy: 77.73
Accuracy: 77.60
Accuracy: 78.12
Accuracy: 76.17

می بینیم که تمام نمرات دقت در حدود ۷۷٪ و میانگین ۷۶٫۹۲۴٪ است.

۷- پیش بینی را انجام دهید

اولین سوال این است:

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

سوال عالی است

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

انجام پیش بینی ها به آسانی فراخوانی تابع predict() در مدل آسان است. ما در لایه خروجی از یک تابع فعال سازی sigmoid استفاده می کنیم ، بنابراین پیش بینی ها در محدوده ۰ تا ۱ احتمال دارد. ما می توانیم با گرد کردن آن ها ، آن ها را به راحتی به یک پیش بینی باینری واضح تبدیل کنیم.

مثلا

...
# make probability predictions with the model
predictions = model.predict(X)
# round predictions 
rounded = [round(x[0]) for x in predictions]

متناوباً ، می توانیم تابع predict_classes () را در مدل فراخوانی کنیم تا مستقیماً کلاس های واضح را پیش بینی کند ، به عنوان مثال:

...
# make class predictions with the model
predictions = model.predict_classes(X)

مثال کامل زیر پیش بینی برای هر مثال در مجموعه داده را نشان می دهد ، سپس داده های ورودی ، کلاس پیش بینی شده و کلاس پیش بینی شده را برای ۵ مثال اول در مجموعه داده چاپ می کند.

# first neural network with keras make predictions
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
# load the dataset
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',')
# split into input (X) and output (y) variables
X = dataset[:,0:8]
y = dataset[:,8]
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10, verbose=0)
# make class predictions with the model
predictions = model.predict_classes(X)
# summarize the first 5 cases
for i in range(5):
  print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i]))

اجرای مثال مانند قبل نوار پیشرفت را نشان نمی دهد زیرا آرگومان verbos را روی ۰ قرار داده ایم.

پس از مناسب بودن مدل ، پیش بینی هایی برای همه مثال های مجموعه داده انجام می شود و سطرهای ورودی و مقدار کلاس پیش بینی شده برای ۵ مثال اول چاپ می شوند و با مقدار کلاس مورد انتظار مقایسه می شوند.

می بینیم که اکثر ردیف ها به درستی پیش بینی شده اند. در حقیقت ، ما انتظار داریم که حدود ۷۶٫۹٪ از ردیف ها بر اساس عملکرد تخمینی ما در مدل قبلی ، به درستی پیش بینی شوند.

[۶٫۰, ۱۴۸٫۰, ۷۲٫۰, ۳۵٫۰, ۰٫۰, ۳۳٫۶, ۰٫۶۲۷, ۵۰٫۰] => 0 (expected 1)
[۱٫۰, ۸۵٫۰, ۶۶٫۰, ۲۹٫۰, ۰٫۰, ۲۶٫۶, ۰٫۳۵۱, ۳۱٫۰] => 0 (expected 0)
[۸٫۰, ۱۸۳٫۰, ۶۴٫۰, ۰٫۰, ۰٫۰, ۲۳٫۳, ۰٫۶۷۲, ۳۲٫۰] => 1 (expected 1)
[۱٫۰, ۸۹٫۰, ۶۶٫۰, ۲۳٫۰, ۹۴٫۰, ۲۸٫۱, ۰٫۱۶۷, ۲۱٫۰] => 0 (expected 0)
[۰٫۰, ۱۳۷٫۰, ۴۰٫۰, ۳۵٫۰, ۱۶۸٫۰, ۴۳٫۱, ۲٫۲۸۸, ۳۳٫۰] => 1 (expected 1)

خلاصه آموزش کراس

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

به طور خاص ، شما شش مرحله اصلی را در استفاده از Keras برای ایجاد یک شبکه عصبی یا مدل یادگیری عمیق یاد گرفتید ، مراحل شامل:

  • نحوه بارگیری داده ها.
  • نحوه تعریف یک شبکه عصبی در کراس.
  • نحوه تدوین مدل Keras با استفاده از بازده عددی کارآمد.
  • نحوه آموزش مدل بر روی داده ها.
  • نحوه ارزیابی مدل بر روی داده ها.
  • چگونه می توان با مدل پیش بینی کرد.

آیا در مورد کراس یا این آموزش سوالی دارید؟

سوال خود را در نظرات مطرح کنید و ما تمام تلاش خود را برای پاسخگویی انجام خواهم داد.

موارد اضافه آموزش Keras

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

این بخش برخی از افزونه های این آموزش را ارائه می دهد که ممکن است بخواهید آن ها را کاوش کنید.

  • مدل را تنظیم کنید. پیکربندی مدل یا روند آموزش را تغییر دهید و ببینید آیا می توانید عملکرد مدل را بهبود ببخشید ، دستیابی به دقت بهتر از ۷۶٪ .
  • مدل را ذخیره کنید. آموزش را به روز کنید تا مدل را در پرونده ذخیره کنید ، سپس بعداً آن را بارگیری کنید و از آن برای پیش بینی استفاده کنید.
  • خلاصه مدل. برای خلاصه کردن مدل و ایجاد یک طرح از لایه های مدل ، آموزش را به روز کنید.
  • مجموعه داده های آموزش و آزمون جداگانه. مجموعه داده بارگذاری شده را به یک مجموعه آموزش و آزمون تقسیم کنید (بر اساس ردیف ها تقسیم شده) و از یک مجموعه برای آموزش مدل و مجموعه دیگر برای تخمین عملکرد مدل بر روی داده های جدید استفاده کنید.
  • نمودارهای منحنی یادگیری. تابع fit () یک شی history تاریخ را برمی گرداند که خلاصه زیان و دقت در پایان هر دوره است. نمودارهای خطی از این داده ها را بنام منحنی های یادگیری ایجاد کنید.
  • یک مجموعه داده جدید بیاموزید. برای استفاده از مجموعه داده جداولی جداگانه ای ، شاید از مخزن یادگیری ماشین UCI ، آموزش را به روز کنید.
  • از API عملکردی استفاده کنید. آموزش استفاده از Keras Functional API برای تعریف مدل را به روز کنید.

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

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

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

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

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

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

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

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