یادگیری عمیق و پایتون و کراس

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

بررسی اجمالی آموزش کراس

ما قصد داریم به آرامی و قدم به قدم توضیح دهیم تا شما بدانید که چگونه می توانید در آینده مدل های خود را ایجاد کنید.
مراحلی این آموزش به شرح زیر است:
• بارگیری داده ها
• تعریف مدل کراس
• کامپایل مدل کراس
• فیت کردن مدل کراس
• ارزیابی مدل کراس
• ادغام
این آموزش کراس چند پیش نیاز لازم دارد:
• پایتون ٢ یا ٣ را نصب و پیکربندی کنید.
• SciPy (شامل NumPy) را نصب و پیکربندی کنید.
• کراس و یک بک-اند (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


اکنون می توانیم مجموعه داده خود را بارگیری کنیم.
در این آموزش کراس قصد داریم از مجموعه داده های دیابت Pima Indians استفاده کنیم. این یک مجموعه داده استاندارد یادگیری ماشین از منبع UCI Machine Learning است. این مجموعه داده، اطلاعات مربوط به سابقه پزشکی بیماران و اینکه آیا آن ها در طی پنج سال اخیر به دیابت مبتلا شده اند یا خیر را، توصیف می کند.
طبقه بندی به صورت باینری است (دیابت مثبت به عنوان 1 و دیابت منفی به عنوان 0). همه متغیرهای ورودی که توصیف بیماران است به صورت عددی هستند. همین امر استفاده مستقیم از شبکه های عصبی را آسان تر می کند.
مجموعه داده های ما در لینک های زیر قابل دسترس می باشند:

Dataset CSV File (pima-indians-diabetes.csv)
Dataset Details

داده ها را دانلود کرده و آن را در دایرکتوری خود، جایی که فایل پایتون قرار دارد، قرار دهید.
آن را با نام زیر ذخیره کنید:

pima-indians-diabetes.csv
اکنون می توانیم با استفاده از تابع loadtxt() فایل را به عنوان ماتریس اعداد بارگذاری کنیم. هشت متغیر ورودی و یک متغیر خروجی (آخرین ستون) وجود دارد. ما در حال آموزش یک مدل برای ترسیم ردیف متغیرهای ورودی (X) به یک متغیر خروجی (y) هستیم که اغلب آن ها را بصورت y = f (X) خلاصه می کنیم.
متغیرها را می توان به شکل زیر خلاصه کرد:
متغیرهای ورودی (X):
• تعداد دفعات بارداری
• غلظت گلوکز در پلاسما
• فشار خون دیاستولیک (میلی متر جیوه)
• ضخامت پوست ماهیچه سه سر (میلی متر)
• انسولین سرم در بازه ٢ ساعته (mu U / ml)
• شاخص توده بدنی (2(قد به متر) / وزن به کیلوگرم)
• سوابق دیابت در خانواده
• سن
متغیرهای خروجی (y):
• متغیر کلاس (0 یا 1)
پس از بارگیری فایل CSV در حافظه، می توان ستون داده ها را به متغیرهای ورودی و خروجی تقسیم کرد. داده ها در آرایه های دوبعدی شامل سطر و ستون ذخیره می شوند.
می توانیم با انتخاب زیر مجموعه ستون ها توسط عملگر برش استاندارد(standard NumPy slice operator)، آرایه را به دو قسمت تقسیم کنیم. روش دیگر این است که از طریق برش 0: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]


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

 

٢. تعریف مدل کراس

مدل ها در کراس به عنوان دنباله ای از لایه ها تعریف می شوند. ما یک مدل Sequential ایجاد کرده و لایه ها را اضافه می کنیم. اطمینان حاصل می کنیم که لایه ورودی از تعداد ورودی های مناسب برخوردار است.
غالبا بهترین نوع ساختار از نظر تعداد لایه ها و انواع آن، از طریق سعی و خطا مشخص می شود. در این پروژه، ما از یک ساختار شبکه کاملا متصل (fully-connected) با سه لایه استفاده خواهیم کرد. لایه های کاملا متصل با استفاده از کلاس Dense تعریف می شوند. ما می توانیم تعداد نورون ها یا گره ها را در لایه به عنوان اولین آرگومان مشخص کرده و با استفاده از آرگومان فعال سازی، عملکرد فعال سازی را تعیین کنیم.
ما از تابع فعال سازی واحد خطی اصلاح شده که به آن ReLU گفته می شود در دو لایه اول و از تابع Sigmoid در لایه خروجی استفاده خواهیم کرد. پیش از این توابع فعال سازی Sigmoid و Tanh برای همه لایه ها ارجحیت داشتند؛ اما امروزه با استفاده از تابع فعال سازی 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’))


 

٣. کامپایل مدل کراس

برای کامپایل این مدل از کتابخانه های عددی کارآمد مانند Theano یا TensorFlow استفاده می شود. بک-اند به طور خودکار بهترین راه برای آموزش مدل و اجرای آن بر روی سخت افزار شما را انتخاب می کند. حین کامپایل می بایست برخی از ویژگی های اضافی ضروری برای آموزش شبکه را مشخص کنیم. به یاد داشته باشید آموزش یک شبکه به معنای پیدا کردن بهترین مجموعه وزن ها برای ترسیم ورودی ها به خروجی در مجموعه داده است.
برای ارزیابی مجموعه ای از وزن ها باید از تابع ضرر(loss function) استفاده کنیم. همچنین از بهینه ساز برای جستجوی وزن های مختلف در شبکه استفاده می شود. در این پروژه، از آنتروپی متقاطع به عنوان آرگومان ضرر استفاده خواهیم کرد. این تابع برای طبقه بندی مسائل باینری مورد استفاده قرار گرفته و در کراس به عنوان “binary_crossentropy” تعریف شده است.
برای بهینه ساز، الگوریتم “adam”را تعریف خواهیم کرد؛ که به دلیل قابلیت تنظیم خودکار و کارآمد بودن در طیف گسترده ای از مسائل، از محبوبیت بالایی برخوردار است. در نهایت، چون این یک مساله طبقه بندی است، از آرگوکان metrics به منظور طبقه بندی و گزارش استفاده خواهیم کرد.


# compile the keras model

model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])


 

۴. فیت کردن مدل کراس

ما می توانیم با فراخوانی تابع fit()، مدل خود را آموزش داده یا فیت کنیم. قبل از شروع این مرحله به تعریف دو مفهوم epoch و batch می پردازیم:
Epoch: دوره: یک دور به روز رسانی شبکه برای مجموعه داده آموزش
Batch: دسته: یک یا چند نمونه در نظر گرفته شده توسط مدل در یک دوره قبل از به روزرسانی وزن.
روند آموزش برای تعداد مشخصی از تکرارها در مجموعه داده به نام epochs اجرا می شود، که ما باید با استفاده از آرگومان epochs آن را مشخص کنیم. ما همچنین می بایست تعداد ردیف های مجموعه داده را قبل از به روزرسانی وزن مدل در هر دوره، تنظیم کنیم. برای این منظور از آرگومان batch_size استفاده می کنیم. دوره و دسته در این پروژه به ترتیب برابر با ١۵٠ و ١٠ می باشد.
این پیکربندی ها می توانند به صورت آزمایشی با سعی و خطا انتخاب شوند. مدل همیشه دارای خطا خواهد بود، اما میزان خطا پس از مدتی یکنواخت می شود. به این فرایند “همگرایی مدل” گفته می شود.


# fit the keras model on the dataset

model.fit(X, y, epochs=150, batch_size=10)


 

۵. ارزیابی مدل کراس

شما می توانید با استفاده از تابع 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))


 

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


python keras_first_network.py


 

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


768/768 [==============================] – 0s 63us/step – loss: 0.4817 – acc: 0.7708

Epoch 147/150

768/768 [==============================] – 0s 63us/step – loss: 0.4764 – acc: 0.7747

Epoch 148/150

768/768 [==============================] – 0s 63us/step – loss: 0.4737 – acc: 0.7682

Epoch 149/150

768/768 [==============================] – 0s 64us/step – loss: 0.4730 – acc: 0.7747

Epoch 150/150

768/768 [==============================] – 0s 63us/step – loss: 0.4754 – acc: 0.7799

768/768 [==============================] – 0s 38us/step

Accuracy: 76.56


 

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


Accuracy: 75.00

Accuracy: 77.73

Accuracy: 77.60

Accuracy: 78.12

Accuracy: 76.17


 

شما عزیزان می توانید به منظور شرکت در دوره آموزش پایتون آنلاین آکادمی آمانج با ما در ارتباط باشید. همچنین فایل PDF این مقاله از لینک زیر قابل دانلود می باشد.

انجام گام به گام پروژه دیپ لرنینگ در پایتونpdf


آیا این مطلب برای شما مفید بود؟

امتیازشو ثبت کنید

میانگین / 5. تعداد رای

اولین نفر شما امتیاز دهید

کمپ تخصصی آموزش کاربردی برنامه نویسی پایتون

یادگیری یکی از تخصص های محبوب بازار کاری

پایتون که برخی آن را پایتان (python) نیز میگویند یک زبان برنامه نویسی سطح بالا ،شئ گرا ، Open Source و تفسیری است که دارای دستورها و کدهای ساده و پویاست. زبان برنامه نویسی پایتون بسیار ساده تر از زبان های برنامه نویسی دیگر است. بوسیله پایتون ساخت برنامه های کاربردی به صورت ساده تر برای ما ممکن شد.
پایتون از سال 1991 ایجاد شد و از آن زمان و مخصوصا سال های اخیر توجه بسیاری از برنامه نویسان و کسانی که میخواهند با برنامه نویسی آشنا شوند را به خود جلب کرد . یکی از مهم ترین دلیل های توجه بسیار به این زبان برنامه نویسی دوست داشتنی کابردها و قابلیت های فراوان آن است :
ادامه...

شاید به این مطالب نیز علاقه مند باشید.

ریاضیات در یادگیری عمیق

کاربرد ریاضیات در یادگیری عمیق

یادگیری عمیق نوعی از علم یادگیری ماشین و هوش مصنوعی است که در واقع از روشی که ذهن انسان برای یادگیری موضوع خاصی به کار می گیرد، تقلید می کند.…

دیپ لرنینگ و یادگیری عمیق و شبکه عصبی و دیپ لرنینگ در پزشکی و آینده علم پزشکی

یادگیری عمیق چگونه به پزشکی کمک می کند؟

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

تاثیر یادگیری عمیق بر سیستم های ویدئویی

چگونه سیستم های مبنی بر یادگیری عمیق امنیت شهرها را تامین می‌کند؟

با گسترش فضای شهری و افزایش جمعیت در شهرهای بزرگ، به کارگیری و گسترش سیستم‌های ویدئویی در فضای شهری، متروها، ایستگاه ها، مراکز تجمع و... به یک امر مهم بدل…

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
آکادمی آمانج
مهارت آموزی جهت ورود به بازار کار

تاییدیه ها

تهران - امیرآباد، دانشکده فنی دانشگاه تهران، ساختمان مکانیک جدید واحد ۱۱۴

آیا این مطلب برای شما مفید بود؟

امتیازشو ثبت کنید

میانگین / 5. تعداد رای

اولین نفر شما امتیاز دهید

کمپ تخصصی آموزش کاربردی برنامه نویسی پایتون

یادگیری یکی از تخصص های محبوب بازار کاری

پایتون که برخی آن را پایتان (python) نیز میگویند یک زبان برنامه نویسی سطح بالا ،شئ گرا ، Open Source و تفسیری است که دارای دستورها و کدهای ساده و پویاست. زبان برنامه نویسی پایتون بسیار ساده تر از زبان های برنامه نویسی دیگر است. بوسیله پایتون ساخت برنامه های کاربردی به صورت ساده تر برای ما ممکن شد.
پایتون از سال 1991 ایجاد شد و از آن زمان و مخصوصا سال های اخیر توجه بسیاری از برنامه نویسان و کسانی که میخواهند با برنامه نویسی آشنا شوند را به خود جلب کرد . یکی از مهم ترین دلیل های توجه بسیار به این زبان برنامه نویسی دوست داشتنی کابردها و قابلیت های فراوان آن است :
ادامه...

کد تخفیف نمیخوای؟

اگه میخوای کد تخفیف شرکت در دوره‌ها، وبینارهای رایگان، بهترین مقالات آکادمی آمانج رو از دست ندی ایمیلت رو این زیر وارد کن!
همین الان عضو شو
close-link
من اینجام