محمدحسین گیوکاشی
محمدحسین گیوکاشی
خواندن ۱ دقیقه·۴ سال پیش

یادگیری انتقالی ( transfer learning with VGG16)

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


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

vgg = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

در کد بالا مدل با استفاده از وزن هایی که در دیتاست imagenet بدست امده تعریف می شود و اندازه ی ورودی در این مدل به صورت 224*224*3 تعریف شده است بعد از تعریف مدل با استفاده از دستور زیر این قسمت از شبکه را فریز می کنیم تا فرانید اموزش برای این قسمت انجام نشده و از وزن های بدست امده در طول اموزش با استفاده از دیتاست imagenet استفاده شود .

vgg.trainable = False

در ادامه مدل VGG را به مدل اصلی اضافه کرد و لایه های موردنیاز برای کلاس بندی داده های را طبق کد زیر اضافه می کنیم .

model = Sequential()

model.add(vgg)

model.add(Flatten())

model.add(Dense(256, activation='relu'))

model.add(Dense(1, activation='sigmoid'))

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

model.compile(loss='binary_crossentropy',

metrics=['accuracy'],

optimizer='adam')

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

history_without_tuning = model.fit(training_generator,

steps_per_epoch=22667  // batch_size,

epochs=10,

validation_data=test_generator,

validation_steps=5472 // batch_size,

verbose=1,

callbacks = [checkpoint_callback,earlystop])

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




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

https://github.com/givkashi/transfer-learning-with-VGG16
https://givkashi.github.io/2021-02-04-transfer-learning/




یادگیری انتقالییادگیری عمیقtransfer learningتشخیص جنسیتvgg16
شاید از این پست‌ها خوشتان بیاید