محیط یادگیری عمیق خود را تنظیم کنید و اولین مدل خود را آموزش دهید

من به عنوان یک محقق و مهندس هوش مصنوعی ، من هیجان زده ام که یک راهنمای عملی را به اشتراک بگذارم تا به شما در یادگیری عمیق کمک کنم. این که آیا شما در این زمینه تازه وارد هستید یا به دنبال تحکیم مهارت های خود هستید ، این آموزش شما را از طریق ایجاد یک محیط یادگیری عمیق و آموزش اولین مدل خود در یک مجموعه داده جذاب ، طی می کند. بیایید شروع کنیم!
مقدمه
یادگیری عمیق هوش مصنوعی را تغییر داده است ، ماشین آلات را توانمند می کند تا از مجموعه داده های عظیم یاد بگیرند و وظایف خود را که یکبار منحصر به انسان فکر می کردند ، بیاموزند – به تشخیص تصویر ، پردازش زبان طبیعی و فراتر از آن فکر کنید. قدرت آن در شبکه های عصبی نهفته است ، که مغز انسان را برای استخراج الگوهای و پیش بینی ها تقلید می کند.
در این آموزش ، ما یک محیط یادگیری عمیق را از ابتدا تنظیم خواهیم کرد و یک مدل را در مجموعه داده Cifar-10 آموزش خواهیم داد-مجموعه ای از 60،000 تصویر با رنگ کوچک در 10 کلاس مانند هواپیما ، ماشین و پرندگان. این مجموعه داده برای مبتدیان مناسب است: به اندازه کافی چالش برانگیز است که توانایی های یادگیری عمیق را نشان می دهد اما به اندازه کافی ساده برای درک آن است. ما تنظیمات محیط ، اجرای کد را با توضیحات پوشش خواهیم داد و با غذای اصلی آماده می شویم. بیایید شیرجه بزنیم!
تنظیم محیط
قبل از ساخت و آموزش مدل خود ، به یک محیط یادگیری عمیق کاربردی نیاز داریم. در حالی که GPU محاسبات را تسریع می کند ، در صورت لزوم می توانید همراه با CPU را دنبال کنید.
توجه: تنظیم بدون دردسر را ترجیح می دهید؟ از Google Colab استفاده کنید-یک GPU رایگان و Tensorflow از پیش نصب شده را ارائه می دهد. فقط نوت بوک خود را بارگذاری کرده و سلول ها را در آنجا اجرا کنید.
مراحل:
1. پایتون را نصب کنید
یادگیری عمیق به شدت به پایتون متکی است. اطمینان حاصل کنید که با بارگیری آن از Python.org روی سیستم خود نصب شده است.
2. کتابخانه های یادگیری عمیق را نصب کنید
ما استفاده خواهیم کرد TensorFlow
وت Keras
(گنجانده شده در TensorFlow) برای این آموزش. آنها را از طریق PIP نصب کنید:
pip install tensorflow keras
GPU دارید؟ نسخه بهینه سازی شده GPU را نصب کنید:
pip install tensorflow-gpu
3. کتابخانه های اضافی را نصب کنید
ما به ابزارهایی برای کنترل و تجسم داده ها نیاز خواهیم داشت:
pip install numpy pandas matplotlib
4. نصب را تأیید کنید
تنظیم خود را با وارد کردن کتابخانه ها در یک پوسته پایتون آزمایش کنید:
import tensorflow as tf
import keras
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
بدون خطا؟ شما آماده هستید!
5. انتخاب یک مجموعه داده جالب
ما از مجموعه داده CIFAR-10 استفاده خواهیم کرد که شامل 50،000 تصویر آموزشی و 10،000 تصویر تست ، هر 32×32 پیکسل ، با برچسب 10 دسته است. این یک معیار کلاسیک است که پیچیدگی و دسترسی را متعادل می کند. آن را مستقیماً با کروس بارگذاری کنید:
from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
کد و توضیحات
بیایید قدم به قدم یک شبکه عصبی حلقوی (CNN) بسازیم و آموزش دهیم.
- پیش پردازش داده ها
- داده های خام قبل از آموزش نیاز به آماده سازی دارند:
- تصاویر را عادی کنید
- مقادیر پیکسل از 0 تا 255 متغیر است. آنها را به مقیاس تبدیل کنید [0, 1] برای عملکرد بهتر مدل:
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
6. برچسب ها را رمزگذاری کنید
برچسب های عدد صحیح (0-9) را به بردارهای باینری برای طبقه بندی چند طبقه تبدیل کنید:
from keras.utils import to_categorical
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
7. ساخت مدل
ما یک CNN ساده ایجاد خواهیم کرد ، ایده آل برای کارهای تصویر:
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
توضیح:
کاروان: Extracts ویژگی ها (لبه ها ، بافت ها) با استفاده از فیلترهای 3×3. لایه اول دارای 32 فیلتر است ، بعداً 64. فعال سازی RELU غیرخطی را معرفی می کند.
maxpooling2d: Downsamples نقشه های ویژگی (به عنوان مثال ، 2×2 اندازه را به نصف کاهش می دهد) ، و در هنگام برش محاسبات ، اطلاعات کلیدی را حفظ می کند.
مسطح کردن: نقشه های ویژگی 2D را به یک بردار 1D برای لایه های متراکم تبدیل می کند.
متراکم: لایه های کاملاً متصل ؛ مورد نهایی از SoftMax برای خروجی های احتمال 10 طبقه استفاده می کند.
input_shape=(32, 32, 3)
: با تصاویر CIFAR-10 32×32 RGB مطابقت دارد.
8. تالیف مدل
مدل را برای آموزش پیکربندی کنید:
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
توضیح:
optimizer="adam"
: سرعت و دقت تعادل بهینه ساز تطبیقی.
loss="categorical_crossentropy"
: استاندارد برای کارهای چند طبقه ، اندازه گیری واگرایی برچسب پیش بینی.
metrics=['accuracy']
: دقت طبقه بندی را در طول آموزش.
9. آموزش مدل
متناسب با مدل با داده های آموزش:
history = model.fit(x_train, y_train, epochs=10, batch_size=64, validation_split=0.2)
توضیح:
epochs=10
: 10 بار از طریق مجموعه داده اجرا می شود. دوره های بیشتر ممکن است دقت را بهبود بخشد اما خطر بیش از حد را در معرض خطر قرار می دهد.
batch_size=64
: وزن ها را بعد از هر 64 نمونه ، تعادل سرعت و ثبات به روز می کند.
validation_split=0.2
: 20 ٪ از داده های آموزشی را برای نظارت بر عملکرد ، از خودداری می کند و از اتکا بیش از حد در تناسب مجموعه آموزش جلوگیری می کند.
10. ارزیابی مدل
مدل آموزش دیده را آزمایش کنید:
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Test accuracy: {test_acc}')
توضیح:
evaluate
: از دست دادن و دقت در داده های آزمون غیب محاسبه می کند و یک عکس فوری عملکرد در دنیای واقعی می دهد.
11. تجسم نتایج
پیشرفت آموزش طرح:
plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label='val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()
توضیح:
نمودارهای آموزش و اعتبار سنجی در هر دوره. واگرایی (به عنوان مثال ، دقت بالایی ، اعتبار سنجی کم) سیگنال های بیش از حد.
خلاصه
در این آموزش ، ما یک محیط یادگیری عمیق را تنظیم کرده ایم و CNN را در مجموعه داده Cifar-10 آموزش داده ایم. ما کتابخانه های ضروری ، داده های از پیش پردازش شده را نصب کردیم ، یک مدل ساختیم و عملکرد آن را ارزیابی کردیم. معماری ساده ما نتایج مناسبی کسب می کند ، اما فضای زیادی برای رشد وجود دارد.
برای افزایش صحت ، سعی کنید لایه ها را اضافه کنید ، با استفاده از Dropout برای تنظیم مجدد یا استفاده از افزایش داده ها برای تقویت تعمیم. Deep Learning یک زمین بازی وسیع است – آزمایش با معماری ها ، هایپرپارامترها یا کشف مجموعه داده ها و دامنه های جدید مانند NLP یا یادگیری تقویت. تمرین عالی می شود ، بنابراین ادامه کار را حفظ کنید. یادگیری مبارک!