Teskari tarqalishli neyronlarni (kitobda 7-bob) kelgusi mavzuda kiritasizmi? Agar kelgusi mavzuga kiritmasangiz shu mavzuning oxiridan kiritish kerak
Download 1.22 Mb.
|
13-mavzu
Dasturning to'liq matni:
np sifatida numpy-ni import qilish # CSV formatidan ro'yxatga o'qitish ma'lumotlarini yuklash va tayyorlash training_data = open ("Database / Data_train.csv", 'r') # 'r' - faylni o'qish uchun ochish training_data_list = training_data.readlines () # readlines () - fayldagi barcha satrlarni train_data_list o'zgaruvchisiga o'qiydi training_data.close () # CSV faylini yopish # CSV formatidan ro'yxatga test ma'lumotlarini yuklash va tayyorlash test_data = open ("Database / Data_test.csv", 'r') # 'r' - faylni o'qish uchun ochish test_data_list = test_data.readlines () # CSV formatidan ro'yxatga test ma'lumotlarini yuklash va tayyorlash. test_data.close () # CSV faylini yopish # Neyron tarmog'ining sinfini aniqlash sinf neyron_Net: # NTlarining vaznlarini boshlash def __init __ (self, input_num, neuron_num, learningrate): # xususiyati (kirish soni, neyron soni) # Vaznlar matrisi # Vazn matritsasini tasodifiy ravishda -0,5 dan 0,5 gacha o’rnatish self.weights = (np.random.rand (neyron_num, input_num) -0.5) # O'qish tezligi parametrini o’rnatish self.lr = o'rganish darajasi o'tish # Neyron tarmog'ini o'qitish usuli def train (self, inputs_list, targets_list): # oladi (ma'lumotlar ro'yxati, javoblar) # Kirishlar ro'yxatini vertikal qatorga o'tkazing. .T - transpozitsiya inputs_x = np.array (inputs_list, ndmin = 2) .T # sonli matritsa targets_Y = np.array (targets_list, ndmin = 2) .T # javob matritsasi: bu raqam nima # Signallarni hisoblash # Neyronlardagi signallarni hisoblang. Vaznlar yig’indisi. x = np.dot (self.weights, input_x) # nuqta - matritsani ko'paytirish X = W * I = vaznlar * kirishlar # Neyrondan chiqadigan signallarni hisoblang. Faollashtirish funksiyasi - sigmoid (x) y = 1 / (1 + np.exp (-x)) # Xatolarni hisoblash # Xatolik E = - (maqsad - haqiqiy qiymat) E = - (maqsadlar_Y - y) # Vaznni yangilang # Har bir havola uchun vaznlarni o’zgartamiz self.weights - = self.lr * np.dot ((E * y * (1.0 - y)), np.transpose (kirish_x)) o'tish # Sinov qiymatini ishlatish usuli def so'rovi (self, inputs_list): # O'zining sinov holatini qabul qiladi # Kirishlar ro'yxatini vertikal 2 o'lchovli qatorga o'tkazing. inputs_x = np.array (inputs_list, ndmin = 2) .T # Neyronlardagi signallarni hisoblang. Vaznlar yig’indisi. x = np.dot (o'z vaznlari, kirish_x) # Neyrondan chiqadigan signallarni hisoblang. Sigmoid (x) y = 1 / (1 + np.exp (-x)) qaytish y # TARMOQ PARAMETRELARINI O’RNATISH # Kirish ma'lumotlari soni, neyronlar data_input = 15 ma'lumotlar_neuron = 2 # O'quv tezligi o'rganish darajasi = 0,1 # NT nusxasini yaratish n = neyron_Net (data_input, data_neuron, learningrate) # Oqlash # Davrlar sonini o’rnatish davrlar = 40000 # O'quv tanlanmasi bo'yicha ishlang oralig'idagi e (davrlar) uchun: for training_data_list: men uchun: # Raqamning kirish ma’lumotlarini olish all_values = i.split (',') # split (',') - satrni belgilarga bo'ling, bu erda vergul "," bo'linadigan belgidir. inputs_x = np.asfarray (all_values [1:]) # Y maqsadli qiymatini olamiz, (javob qaysi raqam ekanligi) maqsadlar_Y = int (all_values [0]) # belgilarni int ga o'tkazish, 0 element - javob # maqsadli natijalarni yaratish (kerakli yorliqdan tashqari 0,01, ya'ni 0,99) maqsadlar_Y = np.zeros (data_neuron) + 0.01 # Y maqsadli qiymatini olamiz, (javob qaysi raqam ekanligi). all_values [0] - ushbu yozuv uchun maqsadli yorliq if int (all_values [0]) <= 1: # target <= 1, chunki biz faqat 0 va 1 raqamlarini taniymiz. maqsadlar_Y [int (all_values [0])] = 0,99 n.train (kirish_x, maqsadlar_Y) # bizning poezd usulimiz neyron tarmog'ini o'rgatishdir # Chiqishdagi vaznlarning natijasi chop etish ('Vaznlar: \ n', n. vaznlar) # Keling, yana o’quv tanlanmasini ko'rib chiqaylik for training_data_list: men uchun: all_values = i.split (',') # split (',') - satrni belgilarga bo'ling, bu erda vergul "," bo'linadigan belgidir. inputs_x = np.asfarray (all_values [1:]) # Tarmoq ishlaydi chiqishlar = n.query (kirish_x) chop etish (i [0], 'Ehtimollik: \ n', natijalar) # Agar ehtimollik 0,5 dan katta bo'lsa va chiqish raqami javobga to'g'ri keladigan bo'lsa, unda biz tarmoq, # o'ziga xos chiqishi bo'yicha, raqamni tanidi. for training_data_list: men uchun: all_values = i.split (',') # split (',') - satrni belgilarga bo'ling, bu erda vergul "," bo'linadigan belgidir. inputs_x = np.asfarray (all_values [1:]) # Tarmoq ishlaydi chiqishlar = n.query (kirish_x) # eng yuqori indeks yorliqqa to'g'ri keladi label = np.argmax (chiqishlar) if [label]> 0.5 va int (all_values [0]) == yorliqlari: chop etish (i [0], 'Bilasizmi?:', 'Ha!') boshqa: chop etish (i [0], 'Bilasizmi?:', 'Yo'q!') # Sinov tanlanmasidan o'ting t = 0 # Sinov tanlanmasi nol raqamli hisoblagich t1 = 0 # Sinov tanlanmasi birligi raqamining hisoblagichi for i in test_data_list: all_values = i.split (',') # split (',') - satrni belgilarga bo'ling, bu erda vergul "," bo'linadigan belgidir. inputs_x = np.asfarray (all_values [1:]) t + = 1 # Tarmoq ishlaydi chiqishlar = n.query (kirish_x) # eng yuqori indeks yorliqqa to'g'ri keladi label = np.argmax (chiqishlar) agar t <= 6 bo'lsa: print ('Men 0 -', t, '?' ni o'rganganim ehtimolligi, natijalar [yorliq]) boshqa: t1 + = 1 chop etish ('Men 1 -', t1, '?' ni o'rganganim ehtimolligi, natijalar [yorliq]) t = 0 # Sinov tanlanmasi nol raqamli hisoblagich t1 = 0 # Sinov tanlanmasi birligi raqamining hisoblagichi # Agar ehtimollik 0,5 dan katta bo'lsa va chiqish raqami javobga to'g'ri keladigan bo'lsa, unda biz tarmoq, # o'ziga xos chiqishi bo'yicha, raqamni tanidi. for i in test_data_list: all_values = i.split (',') # split (',') - satrni belgilarga bo'ling, bu erda vergul "," bo'linadigan belgidir. inputs_x = np.asfarray (all_values [1:]) # Tarmoq ishlaydi chiqishlar = n.query (kirish_x) # eng yuqori indeks yorliqqa to'g'ri keladi label = np.argmax (chiqishlar) t + = 1 if [label]> 0.5 va int (all_values [0]) == yorliqlari: print (i [0], 'Aniqlanganmi ?:', t, 'Ha!') boshqa: t1 + = 1 print (i [0], 'Aniqlanganmi ?:', t1, 'Yo'q!') Dastur natijasi: Vazn koeffitsientlari: [[0.55376239 -0.2659114 -0.55801795 1.63794241 -0.39180754 0.18253672 -1.86935497 -4.51957151 -1.10400713 3.68316632 -1.31690796 0.48928634 0.63951451 0.6593403 -3.74255197] [-4.18510101 -3.35072555 -0.15142484 -0.89959198 -0.54914752 1.80364436 –2.10131379 -0.79061126 0.94477939 0.27198919 -0.42900452 0.13232677 –0.54182952 0.16586589 1.24938759]] 0 ehtimollik: [[0.98282717] [0.0018778]] 1 ehtimollik: [[0.01110791] [0.98279182]] 2 Ehtimollik: [[0.01280932] [0.00169931]] 3 Ehtimollik: [[4.97172575e-05] [2.29715820e-03]] 4 Ehtimollik: [[0.00010462] [0.0130299]] 5 ehtimollik: [[0.00018235] [0.00010789]] 6 Ehtimollik: [[0.01247943] [0.00070262]] 7 Ehtimollik: [[0.01036096] [0.01685072]] 8 Ehtimollik: [[0.00498377] [0.00085023]] 9 Ehtimollik: [[0.01543393] [0.00064968]] 0 Siz tanib oldingizmi?: Ha! 1 Siz tanidingizmi?: Ha! 2 Siz tanidingizmi?: Yo'q! 3 Siz tanidingizmi?: Yo'q! 4 Siz tanidingizmi?: Yo'q! 5 Siz tanidingizmi?: Yo'q! 6 Siz tanidingizmi?: Yo'q! 7 Siz tanidingizmi?: Yo'q! 8 Siz tanidingizmi?: Yo'q! 9 Siz tanidingizmi?: Yo'q! 1 - 0 ni tanish ehtimoli? [0.95590294] 2 - 0 ni tanish ehtimoli? [0.98378171] 3 - 0 ni tanish ehtimoli? [0.63522571] 4 - 0 ni tanish ehtimoli? [0.92786908] 5 - 0 ni tanish ehtimoli? [0.78988343] 6 - 0 ni tanish ehtimoli? [0.76715129] 1 - 1 ni tanish ehtimoli? [0.98163393] 2 - 1 ni tanish ehtimoli? [0.98125632] 3 - 1 ni tanish ehtimoli? [0.94877843] 4 - 1 ni tanish ehtimoli? [0.95536855] 5 - 1 ni tanish ehtimoli? [0.9817356] 6 - 1 ni tanish ehtimoli? [0.95543842] 1 - 0 ni tanidingizmi?: Ha! 2 - 0 ni tanidingizmi?: Ha! 3 - 0 ni tanidingizmi?: Ha! 4 - 0 ni tanidingizmi?: Ha! 5 - 0 ni tanidingizmi?: Ha! 6 - 0 ni tanidingizmi?: Ha! 7 - 1 ni tanidingizmi?: Ha! 8 - 1 ni tanidingizmi?: Ha! 9 - 1 ni tanidingizmi?: Ha! 10 -1 ni tanidingizmi?: Ha! 11 - 1ni tanidingizmi?: Ha! 12 - 1 ni tanidingizmi?: Ha! Dastur kodini quyidagi havola orqali topishingiz mumkin: Download 1.22 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling