مراحل ایجاد یک مدل یادگیری عمیق با Keras (قسمت اول)
پروژه یادگیری عمیق گام به گام در پایتون با Keras
Keras یک کتابخانه قدرتمند و منبع باز برای استفاده رایگان پایتون برای توسعه و ارزیابی مدلهای یادگیری عمیق است. این کتابخانه بر اساس کتابخانه های محاسباتی عددی کارآمد Theano و TensorFlow پیاده سازی شده است و به شما امکان می دهد مدل های شبکه عصبی را فقط در چند خط کد تعریف و آموزش دهید. در این آموزش، نحوه ایجاد اولین مدل شبکه عصبی یادگیری عمیق خود در پایتون با استفاده از Keras را تجربه خواهید کرد.
مروری بر آموزش Keras
کد زیادی لازم نیست، اما ما به تدریج از آن عبور می کنیم تا بدانید چگونه در آینده مدل های خود را ایجاد کنید.
مراحلی که قرار است در این آموزش به آنها بپردازید به شرح زیر است:
1- بارگذاری داده ها
2- تعریف مدل Keras.
3- کامپایل مدل Keras.
4- آموزش مدل با استفاده از متد fit.
5- ارزیابی مدل با استفاده از معیارهای استاندارد.
6-ترکیب همه این مراحل
7- پیش بینی نمونه جدید بر اساس مدل آموزش دیده
-
بارگذاری داده ها
اولین قدم تعریف توابع و کلاس هایی است که قصد داریم در این آموزش از آنها استفاده کنیم.ما از کتابخانه NumPy برای بارگذاری مجموعه داده(dataset) خود استفاده خواهیم کرد و از دو کلاس از کتابخانه Keras برای تعریف مدل خود استفاده خواهیم کرد.
ورودی مورد نیاز در زیر ذکر شده است.
# first neural network with keras tutorial from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense ...
… اکنون می توانیم مجموعه داده (Dataset) خود را بارگذاری کنیم.
در این آموزش Keras، ما قصد داریم از مجموعه داده های ابتلا به دیابت Pima Indians استفاده کنیم. این یک مجموعه داده استاندارد یادگیری ماشین از مخزن یادگیری ماشین UCI است.در این اطلاعات پرونده پزشکی بیماران سرخپوستان “پیما” و اینکه آیا آنها در طول پنج سال به دیابت مبتلا شده بودند را توصیف می کند.
به این ترتیب ، این یک مشکل طبقه بندی دوتایی است (شروع دیابت 1 یا نه 0). همه متغیرهای ورودی که هر بیمار را توصیف می کنند عددی هستند. این باعث می شود تا بتوانید مستقیماً با شبکه های عصبی که انتظار ورودی و خروجی عددی دارند استفاده کنید و برای اولین شبکه عصبی ما در Keras ایده آل است.
مجموعه داده از اینجا در دسترس است:
مجموعه داده را بارگیری کرده و در فهرست کار محلی خود قرار دهید ، همان محل فایل پایتون شما.
آن را با نام فایل ذخیره کنید:
pima-indians-diabetes.csv
6,148,72,35,0,33.6,0.627,50,1 1,85,66,29,0,26.6,0.351,31,0 8,183,64,0,0,23.3,0.672,32,1 1,89,66,23,94,28.1,0.167,21,0 0,137,40,35,168,43.1,2.288,33,1
معرفی ویژگی ها
به داخل فایل نگاهی بیندازید، باید ردیف هایی از داده های زیر را مشاهده کنید:
متغیرها را می توان به شرح زیر خلاصه کرد:
متغیرهای ورودی (X):
تعداد دفعات بارداری
غلظت گلوکز پلاسما 2 ساعت در آزمایش تحمل گلوکز خوراکی
فشار خون دیاستولیک (میلی متر جیوه)
ضخامت چین خوردگی سه سر بازو (میلی متر)
انسولین سرم 2 ساعته (mU/ml)
شاخص توده بدن (وزن بر کیلوگرم/(ارتفاع بر متر)^2)
عملکرد شجره نامه دیابت
سن (سال)
متغیرهای خروجی (y):
متغیر کلاس (0 یا 1)
تعیین ویژگی های ورودی و خروجی
پس از بارگیری فایل CSV در حافظه، می توانیم ستون های داده را به متغیرهای ورودی و خروجی تقسیم کنیم.داده ها در یک آرایه دو بعدی ذخیره می شوند که در آن بعد اول ردیف و بعد دوم ستون است ، به عنوان مثال. [سطرها ، ستونها].ما می توانیم آرایه را با انتخاب زیر مجموعه هایی از ستون ها با استفاده از عملگر استاندارد NumPy یا “:” به دو آرایه تقسیم کنیم. ما می توانیم 8 ستون اول را از فهرست 0 تا شاخص 7 از طریق برش 0: 8 انتخاب کنیم. سپس می توانیم ستون خروجی (متغیر نهم) را از طریق فهرست 8 انتخاب کنیم.
... # 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] ...
ما اکنون آماده هستیم تا مدل شبکه عصبی خود را تعریف کنیم.
توجه داشته باشید ، مجموعه داده دارای 9 ستون است و محدوده 0: 8 ستون های 0 تا 7 را انتخاب می کند و قبل از فهرست 8 متوقف می شود. اگر این مورد برای شما جدید نیست ، می توانید در این پست در مورد برش و محدوده آرایه اطلاعات بیشتری کسب کنید:
2. تعریف مدل Keras
مدل ها در Keras به عنوان دنباله ای از لایه ها تعریف می شوند. ما یک مدل Sequential ایجاد می کنیم و لایه ها را یک به یک اضافه می کنیم تا زمانی که از معماری شبکه خود راضی باشیم. اولین چیزی که باید درست شود این است که مطمئن شوید لایه ورودی دارای تعداد مناسب ویژگی های ورودی است. این را می توان هنگام ایجاد اولین لایه با آرگومان input_dim و تنظیم آن روی 8 برای 8 متغیر ورودی مشخص کرد.چگونه می توانیم تعداد لایه ها و انواع آنها را بدانیم؟
این سوال بسیار سختی است. روشهای اکتشافی وجود دارد که می توانیم از آنها استفاده کنیم و اغلب بهترین ساختار شبکه از طریق آزمایش و خطا یافت می شود. به طور کلی، شما نیاز به یک شبکه به اندازه کافی بزرگ دارید تا ساختار مشکل را درک کنید. در این مثال، ما از یک ساختار شبکه کاملاً متصل با سه لایه استفاده خواهیم کرد. لایه های کاملاً متصل با استفاده از کلاس Dense تعریف می شوند. ما می توانیم تعداد نورون ها یا گره های موجود در لایه را به عنوان اولین آرگومان مشخص کنیم و با استفاده از آرگومان فعال سازی، تابع فعال سازی را مشخص کنیم. در دو لایه اول از تابع فعال سازی واحد خطی اصلاح شده که به آن ReLU می گویند و در لایه خروجی تابع Sigmoid استفاده می کنیم.
قبلاً اینطور بود که عملکردهای فعال سازی Sigmoid و Tanh برای همه لایه ها ترجیح داده می شد. این روزها با استفاده از عملکرد فعال سازی ReLU عملکرد بهتری حاصل می شود. ما از یک سیگموئید در لایه خروجی استفاده می کنیم تا مطمئن شویم خروجی شبکه ما بین 0 تا 1 است و به راحتی به کلاس 1 ترسیم می شود یا به کلاسبندی سخت هر یک از کلاس ها با آستانه پیش فرض 0.5 متصل می شود.
با افزودن هر لایه می توان همه را با هم ترکیب کرد:
- مدل انتظار می رود ردیف های داده با 8 متغیر (آرگومان input_dim = 8)
- اولین لایه مخفی دارای 12 گره است و از تابع فعالسازی relu استفاده می کند.
- لایه مخفی دوم دارای 8 گره است و از تابع فعالسازی relu استفاده می کند.
- لایه خروجی یک گره دارد و از تابع فعال سازی سیگموئید استفاده می کند.
... 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 را اضافه می کند، 2 کار را انجام می دهد، لایه ورودی یا قابل مشاهده و اولین لایه مخفی را مشخص می کند.
3. کامپایل مدل Keras
اکنون که مدل تعریف شده است، می توانیم آن را کامپایل کنیم.
در تدوین مدل از کتابخانه های عددی کارآمد تحت پوشش (به اصطلاح پشتیبان) مانند Theano یا TensorFlow استفاده می شود. پشتیبان به طور خودکار بهترین راه را برای نمایش شبکه برای آموزش و پیش بینی اجرای سخت افزار شما مانند CPU یا GPU یا حتی توزیع شده انتخاب می کند.
هنگام کامپایل ، باید برخی از ویژگی های اضافی مورد نیاز هنگام آموزش شبکه را مشخص کنیم. به یاد داشته باشید که آموزش شبکه به معنای یافتن بهترین مجموعه وزن برای ترسیم ورودی به خروجی در مجموعه داده ما است.ما باید تابع ضرر را برای ارزیابی مجموعه ای از وزن ها مشخص کنیم ، از بهینه ساز برای جستجوی وزن های مختلف شبکه و هر معیار اختیاری که می خواهیم در طول آموزش جمع آوری و گزارش دهیم ، استفاده می شود.در این مورد ، از آنتروپی متقاطع به عنوان استدلال ضرر استفاده خواهیم کرد. این ضرر برای مشکلات طبقه بندی دوتایی است و در کراس به عنوان “binary_crossentropy” تعریف شده است. در اینجا می توانید درباره انتخاب توابع ضرر بر اساس مشکل خود اطلاعات بیشتری کسب کنید:
نحوه انتخاب عملکردهای از دست دادن در هنگام آموزش یادگیری عمیق شبکه های عصبی ما بهینه ساز را به عنوان الگوریتم نزول شیب تصادفی کارآمد “adam” تعریف می کنیم. این یک نسخه محبوب شیب نزولی است زیرا به طور خودکار خود را تنظیم می کند و نتایج خوبی را در طیف وسیعی از مشکلات ارائه می دهد.
برای یادگیری عمیق سرانجام ، به دلیل مشکل کلاسبندی ، ما دقت کلاسبندی را که از طریق استدلال معیارها تعریف شده است ، جمع آوری و گزارش می دهیم.
# compile the keras model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) ...
پایان قسسمت اول
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.