Funktsiyani Kodlash
Tugunlarning xarakteristikalari bizga har bir tugun bilan bog'liq xususiyat haqida ma'lumot beradi. Ma'lumotni kodlash usulini qo'llash orqali biz ushbu xususiyatlarni bir zumda kodlashimiz mumkin.
Biz ushbu usuldan tarmoqning kichik qismini (masalan, 60 ta tugunni) ko'rsatish uchun inkapsulyatsiya qilish uchun foydalanmoqchimiz. Kod bu erda keltirilgan.
Grafiklarni Loyihalash Va Ko'rsatish
Biz geometrik mash'aldan foydalanamiz. bizning grafikimizni yaratish uchun ma'lumotlar.
Turli (ixtiyoriy) xususiyatlarga ega bo'lgan bitta grafikni modellashtirish uchun oddiy Python ob'ekti bo'lgan ma'lumotlardan foydalaniladi. Ushbu sinfdan va quyidagi atributlardan (barchasi mash'al tensorlari) foydalanib, biz grafik ob'ektimizni yaratamiz.
Kodlangan tugun xususiyatlariga ajratiladigan x qiymatining shakli [tugunlar soni, xususiyatlar soni].
Y ning shakli [tugunlar soni] va u tugun belgilariga qo'llaniladi.
chekka indeks: Yo'naltirilmagan grafikni tasvirlash uchun biz bir xil ikkita tugunni bog'laydigan, lekin qarama-qarshi yo'nalishda joylashgan ikkita aniq yo'naltirilgan qirralarning mavjudligiga imkon berish uchun dastlabki chekka indekslarini kengaytirishimiz kerak.
Masalan, 100 va 200 tugunlari o'rtasida, biri 200 dan 100 gacha, ikkinchisi 100 dan 200 gacha bo'lgan bir juft qirralar talab qilinadi. Agar chekka indekslari taqdim etilgan bo'lsa, unda yo'naltirilmagan grafikni shunday ko'rsatish mumkin. [2,2*asl qirralarning soni] tenzor shakli bo'ladi.
Grafikni ko'rsatish uchun biz chizilgan grafik usulimizni yaratamiz. Birinchi qadam, bir hil tarmog'imizni NetworkX grafigiga aylantirishdir, keyin uni NetworkX.draw yordamida chizish mumkin.
Bizning GNN Modelimizni Yarating Va Uni O'rgating
Biz butun ma'lumotlar to'plamini kodlashdan boshlaymiz, kodlash ma'lumotlarini light=False bilan bajaramiz va keyin butun grafikni qurish uchun light=False bilan construct graph ni chaqiramiz. Biz bu katta grafikni chizishga urinmaymiz, chunki siz cheklangan resurslarga ega mahalliy mashinadan foydalanyapsiz deb o'ylayman.
0 va 1 raqamlari yordamida har bir maxsus niqobga qaysi tugunlar tegishli ekanligini aniqlaydigan ikkilik vektorlar bo'lgan niqoblar mashg'ulot bosqichiga qaysi tugunlar mashg'ulot vaqtida kiritilishi kerakligini bildirish va xulosa bosqichiga qaysi tugunlar test ma'lumotlari ekanligini aytish uchun ishlatilishi mumkin. Mash'al geometrik. o'zgarishlar.
AddTrainValTestMask sinfining o'quv maskasi, val maskasi va sinov niqobi xususiyatlaridan foydalanib, tugun darajasidagi bo'linish qo'shilishi mumkin, bu grafikni olish va niqoblarimiz qanday tuzilishini belgilashimizga imkon beradi.
Biz faqat 10% ta'lim uchun foydalanamiz va ma'lumotlarning 60% dan test to'plami sifatida foydalanamiz va 30% tekshirish to'plami sifatida foydalanamiz.
Endi biz ikkita GCNConv qatlamini to'playmiz, ularning birinchisida chiqish funksiyalari soni grafikdagi kirish xususiyatlari sifatidagi xususiyatlar soniga teng.
Bizning sinflar soniga teng chiqish tugunlarini o'z ichiga olgan ikkinchi qatlamda biz relu faollashtirish funktsiyasini qo'llaymiz va yashirin xususiyatlarni taqdim etamiz.
Edge indeksi va chekka og'irligi GCNConv oldinga funksiyada qabul qilishi mumkin bo'lgan ko'p variantlardan ikkitasi x, lekin bizning vaziyatimizda bizga faqat birinchi ikkita o'zgaruvchi kerak.
Bizning modelimiz grafikdagi har bir tugunning sinfini taxmin qilish imkoniyatiga ega bo'lishiga qaramay, biz hali ham fazaga qarab har bir to'plam uchun aniqlik va yo'qotishlarni alohida aniqlashimiz kerak.
Misol uchun, mashg'ulot paytida biz faqat mashg'ulotning aniqligi va yo'qotilishini aniqlash uchun o'quv majmuasidan foydalanmoqchimiz, shuning uchun bizning niqoblarimiz bu erda yordam beradi.
Tegishli yo'qotish va aniqlikni hisoblash uchun biz niqoblangan yo'qotish va niqoblangan aniqlik funktsiyalarini aniqlaymiz.
Do'stlaringiz bilan baham: |