Teskari tarqalishli neyronlarni (kitobda 7-bob) kelgusi mavzuda kiritasizmi? Agar kelgusi mavzuga kiritmasangiz shu mavzuning oxiridan kiritish kerak



Download 1,22 Mb.
bet14/16
Sana23.12.2022
Hajmi1,22 Mb.
#895341
1   ...   8   9   10   11   12   13   14   15   16
Bog'liq
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:
1   ...   8   9   10   11   12   13   14   15   16




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish