Dasturiy injiniring” kafedrasi s. N. Iskandarova ma’lumotlarga dastlabki ishlov berish fanidan


O'Z-O'ZI-O'ZI NAZORAT UCHUN SAVOLLAR



Download 1,46 Mb.
bet63/71
Sana28.01.2023
Hajmi1,46 Mb.
#904156
1   ...   59   60   61   62   63   64   65   66   ...   71
Bog'liq
Dasturiy injiniring” kafedrasi s. N. Iskandarova ma’lumotlarga d

O'Z-O'ZI-O'ZI NAZORAT UCHUN SAVOLLAR
https://www.youtube.com/watch?v=KaUWLIVloZ8 Python-da ma'lumotlarni vizualizatsiya qilish
https://cpp-python-nsu.inp.nsk.su/textbook/sec4/ch8
Grafik, statik va interaktiv vizualizatsiya. Matplotlib kutubxonasi bilan ishlash. O'lchovni o'zgartirish. Belgilar, belgilar va yozuvlarni chizish. Tushuntirish belgilarini qo'shish. Izohlar va pastki chizmalarda chizish. Belgilar va ranglardan foydalanish. Grafiklarni faylda saqlash. Pandalarni chizish funksiyalari, jumladan, chiziqli va chiziqli bo'lmagan funksiyalar chizmalari, chiziqli diagrammalar, gistogrammalar, ehtimollik zichligi chizmalari, qutilar va mo'ylovlar va scatterplotlar.


Kitob “Python. Ma'lumotlar vizualizatsiyasi: Matplotlib, Seaborn, Mayavi "



Исходный текст


Визуализация данных— это представлениеданныхв виде, который обеспечивает наиболее эффективную работу человека по их изучению.
Предложить лучший вариант перевода
Ma'ruza 14. Paketlar Keras va TensorFlow
REJA

  1. Chuqur o'rganish kutubxonalari: Keras

  2. TensorFlow: zamonaviy mashina o'rganish kutubxonasi

Asosiy tushunchalar:
O'Z-O'ZI-O'ZI NAZORAT UCHUN SAVOLLAR
1. Chuqur o'rganish kutubxonalari: Keras
Keras dastlab Theano uchun qulay qo'shimcha sifatida o'sdi. Shuning uchun uning yunoncha nomi Kthas bo'lib, yunoncha "shox" degan ma'noni anglatadi, bu o'z navbatida Gomerning Odisseyiga ishoradir. O'shandan beri ko'prik ostidan juda ko'p suv oqib o'tgan bo'lsa-da, Keras dastlab Tensorflowni qo'llab-quvvatlay boshladi, keyin esa butunlay uning bir qismiga aylandi. Biroq, bizning hikoyamiz ushbu ramkaning murakkab taqdiriga emas, balki uning imkoniyatlariga bag'ishlanadi. Agar qiziqsangiz, mushukka xush kelibsiz.
Backends

Backends nima uchun Keras mashhur va mashhur bo'ldi (boshqa afzalliklar qatorida, biz quyida muhokama qilamiz). Keras sizga boshqa turli xil ramkalardan backend sifatida foydalanish imkonini beradi. Bunday holda, siz yozgan kod ishlatiladigan backenddan qat'iy nazar bajariladi. Rivojlanish, aytganimizdek, Theano bilan boshlandi, ammo vaqt o'tishi bilan Tensorflow qo'shildi. Endi Keras u bilan sukut bo'yicha ishlaydi, lekin agar siz Theano'dan foydalanmoqchi bo'lsangiz, buni qanday qilishning ikkita varianti mavjud:


$ HOME / .keras / keras.json yo'lida joylashgan keras.json konfiguratsiya faylini tahrirlang (yoki Windows operatsion tizimlarida % USERPROFILE% \. Keras \ keras.json ). Bizga backend maydoni kerak :

{
"image_data_format": "kanallar_oxirgi",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "theano"
}
Ikkinchi usul - KERAS_BACKEND muhit o'zgaruvchisini o'rnatish, masalan: 

KERAS_BACKEND = theano python -c "keras import orqa qismidan"


Theano backend-dan foydalanish.

Shuni ta'kidlash kerakki, hozirda Microsoft-dan CNTK uchun ulanishlarni yozish bo'yicha ish olib borilmoqda, shuning uchun bir muncha vaqt o'tgach, boshqa mavjud bo'lgan backend paydo bo'ladi. Buni shu yerda kuzatishingiz mumkin . 


U erda ham MXNet Keras backend hali barcha funksiyalarini ega emas, lekin siz MXNet foydalanayotgan bo'lsangiz, bu imkoniyati uchun e'tibor mumkin. 


Shuningdek, Keras.js qiziqarli loyihasi mavjud bo'lib, u o'qitilgan Keras modellarini GPUga ega mashinalarda brauzerdan ishga tushirish imkonini beradi. 


Shunday qilib, Keras backends kengaymoqda va vaqt o'tishi bilan dunyoni egallaydi! (Ammo bu aniq emas.)


Amaliy misol


Oldingi maqolalarda tasvirlangan ramkalar bo'yicha klassik mashinani o'rganish modellarining ishini tavsiflashga katta e'tibor berildi. Aftidan, endi biz [unchalik chuqur bo'lmagan] neyron tarmoqni misol qilib olishimiz mumkin.


Ma'lumotlar



Mashinani o'rganishning har qanday modelini o'qitish ma'lumotlardan boshlanadi. Keras ichida bir nechta o'quv ma'lumotlar to'plami mavjud, ammo ular allaqachon ishlash uchun qulay bo'lgan shaklga kiritilgan va Kerasning to'liq quvvatini ko'rsatishga imkon bermaydi. Shuning uchun biz ko'proq xom ma'lumotlar to'plamini olamiz. Bu 20 ta yangilik guruhining ma'lumotlar to'plami bo'ladi - Usenet guruhlaridan 20 000 ta xabarlar (bu 1990-yillardagi pochta almashinuvi tizimi, FIDOga o'xshash, o'quvchiga biroz tanish bo'lishi mumkin), taxminan teng ravishda 20 toifaga bo'lingan. Biz o'z tarmog'imizni ushbu yangiliklar guruhlariga xabarlarni to'g'ri tarqatishga o'rgatamiz.


sklearn.datasets dan fetch_20newsgroups import qiling


newsgroups_train = fetch_20newsgroups (quyi to'plam = "poezd")
newsgroups_test = fetch_20newsgroups (quyi to'plam = 'test')

Mana o'quv namunasidan hujjat mazmuniga misol:


newsgroups_train ['ma'lumotlar'] [0]

Oldindan ishlov berish


Keras matnlar, rasmlar va vaqt seriyalarini, boshqacha qilib aytganda, eng keng tarqalgan ma'lumotlar turlarini qulay oldindan qayta ishlash vositalarini o'z ichiga oladi. Bugun biz matnlar bilan ishlayapmiz, shuning uchun biz ularni tokenlarga bo'lishimiz va ularni matritsa shakliga keltirishimiz kerak.


tokenizer = Tokenizer (so'z_soni = maksimal_so'z)


tokenizer.fit_on_texts (newsgroups_train ["ma'lumotlar"]) # endi tokenizer ushbu matn korpusining lug'atini biladi 
x_train = tokenizer.texts_to_matrix (newsgroups_train ["ma'lumotlar"], rejim = "ikkilik")
x_test = tokenizer.texts_to_matrix (newsgroups_test ["ma'lumotlar"], rejim = "ikkilik")

Chiqishda biz quyidagi o'lchamdagi ikkilik matritsalarni oldik:


x_train shakli: (11314, 1000)


x_test shakli: (7532, 1000)

Birinchi raqam namunadagi hujjatlar soni, ikkinchisi esa lug‘atimiz hajmi (bu misolda ming).


Shuningdek, biz kross-entropiya yordamida o'qitish uchun sinf belgilarini matritsa shakliga aylantirishimiz kerak. Buning uchun biz sinf raqamini bitta issiq vektor deb ataladigan narsaga aylantiramiz, ya'ni. nol va bitta birlikdan iborat vektor:


y_train = keras.utils.to_categorical (newsgroups_train ["maqsad"], sinflar soni)


y_test = keras.utils.to_categorical (newsgroups_test ["maqsad"], sinflar soni)

Chiqishda biz quyidagi o'lchamdagi ikkilik matritsalarni ham olamiz:


y_poezd shakli: (11314, 20)


y_test shakli: (7532, 20)

Ko'rib turganimizdek, ushbu matritsalarning o'lchamlari ma'lumotlar matritsalariga qisman to'g'ri keladi (birinchi koordinatada - o'quv va test namunalaridagi hujjatlar soni), qisman - yo'q. Ikkinchi koordinatada bizda sinflar soni mavjud (ma'lumotlar to'plami nomidan ko'rinib turibdiki, 20 ta).


Bo'ldi, endi biz o'z tarmog'imizga yangiliklarni klassifikatsiyani o'rgatishga tayyormiz!


Model

Kerasdagi modelni ikkita asosiy usulda tasvirlash mumkin:

Ketma-ket API


Birinchisi, modelning izchil tavsifi, masalan:


model = Ketma-ket ()


model.add (Zich (512, kirish_shakli = (maksimal_so'z,)))
model.add (faollashtirish ('relu'))
model.add (To'xtash (0,5))
model.add (Zich (sinflar_soni))
model.add (faollashtirish ('softmax'))

yoki shunga o'xshash:


model = Ketma-ket ([


Zich (512, kirish_shakli = (maksimal_so'z,)),
Faollashtirish ('relu'),
Tashlab ketish (0,5),
Zich (sinflar_soni),
Faollashtirish ("softmax")
])

Funktsional API


Bir muncha vaqt oldin, model yaratish uchun funktsional API-dan foydalanish mumkin bo'ldi - ikkinchi usul:


a = Kirish (shakl = (maksimal_so'z,))


b = Zich (512) (a)
b = Faollashtirish ('relu') (b)
b = Chiqish (0,5) (b)
b = Zich (sinflar_soni) (b)
b = Faollashtirish ('softmax') (b)
model = Model (kirishlar = a, chiqishlar = b)

Usullar o'rtasida fundamental farq yo'q, qaysi birini afzal ko'rganingizni tanlang. Model


klassi (va undan meros bo'lib qolgan Sequential) qulay interfeysga ega bo'lib, modelga qaysi qatlamlar kiritilganligini ko'rish imkonini beradi - model.layers, kirishlar - model.kirishlar va chiqishlar - model.outputs.

Shuningdek, modelni ko'rsatish va saqlash uchun juda qulay usul model.to_yaml hisoblanadi. 


Spoyler ostida, uning bizning modelimiz uchun chiqishi.

Bu sizga modellarni odam o'qishi mumkin bo'lgan shaklda saqlashga, shuningdek, bunday tavsifdan modellarni yaratishga imkon beradi:


keras.models dan import model_from_yaml


yaml_string = model.to_yaml ()
model = model_from_yaml (yaml_string)

Shuni ta'kidlash kerakki, matn shaklida saqlangan modelda (Aytgancha, uni JSONda saqlash ham mumkin) og'irliklarni o'z ichiga olmaydi. Og'irliklarni saqlash va yuklash uchun mos ravishda save_weights va load_weights funksiyalaridan foydalaning .


Modelni ko'rsatish


Vizualizatsiyani e'tiborsiz qoldirib bo'lmaydi. Keras modellar uchun o'rnatilgan vizualizatsiyaga ega:


keras.utils dan plot_model import qiling


plot_model (model, to_file = 'model.png', show_shapes = Rost)

Ushbu kod quyidagi rasmni model.png nomi ostida saqlaydi :



Bu erda biz qo'shimcha ravishda qatlamlar uchun kirish va chiqishlarning o'lchamlarini ko'rsatdik. O'lchamdagi kortejda birinchi o'rinda turadigan hech biri partiyaning o'lchamidir. Chunki bo'lgan , u hech partiyasi o'zboshimchalik bo'lishi mumkin.


Agar siz uni jupyter daftarida ko'rsatishni istasangiz , sizga biroz boshqacha kod kerak bo'ladi: 


IPython.display dan import SVG


keras.utils.vis_utils dan import model_to_dot
SVG (model_to_dot (model, show_shapes = True) .create (prog = 'nuqta', format = 'svg'))

Shuni ta'kidlash kerakki, renderlash uchun graphviz to'plami , shuningdek, pythonic pydot paketi kerak bo'ladi . Vizualizatsiya to'g'ri ishlashi uchun ombordagi pydot to'plami ishlamasligi haqida nozik bir nuqta bor , siz uning yangilangan pydot-ng versiyasini olishingiz kerak .


pip install pydot-ng


Ubuntu- dagi graphviz to'plami shunday o'rnatilgan (boshqa Linux distributivlarida ham shunga o'xshash):


apt install graphviz


MacOS tizimida (HomeBrew paket tizimidan foydalangan holda):


brew install graphviz


Windows-da o'rnatish bo'yicha ko'rsatmalarni bu erda topishingiz mumkin . 


Modelni ishga tayyorlash


Shunday qilib, biz o'z modelimizni yaratdik. Endi siz uni ishga tayyorlashingiz kerak:


model.compile (yo'qotish = 'kategorik_krossentropiya',


optimallashtiruvchi = 'adam',
ko'rsatkichlar = ['aniqlik'])

Kompilyatsiya funksiyasining parametrlari nimani anglatadi ? yo'qotish xato funksiyasi, bizning holatlarimizda bu o'zaro faoliyat entropiya bo'lib, buning uchun biz matritsalar shaklida etiketkalarimizni tayyorladik; optimallashtiruvchi - bu optimallashtiruvchi qo'llaniladigan, muntazam stokastik gradient tushishi mumkin, ammo Odam bu muammoda yaxshiroq konvergentsiyani ko'rsatadi; ko'rsatkichlar - modelning sifati hisobga olinadigan ko'rsatkichlar, bizning holatlarimizda bu aniqlik, ya'ni to'g'ri taxmin qilingan javoblar nisbati.


Maxsus yo'qotish


Keras eng mashhur xato funksiyalarini o'z ichiga olgan bo'lsa-da, sizning vazifangiz noyob narsani talab qilishi mumkin. O'zingizni yo'qotish uchun sizga ozgina kerak bo'ladi: to'g'ri va bashorat qilingan javoblar vektorlarini oladigan va chiqishda bitta raqamni chiqaradigan funksiyani aniqlang. Trening uchun keling, o'zaro faoliyat entropiyani hisoblash uchun o'z funksiyamizni yarataylik. Buni boshqacha qilish uchun biz kesish deb ataladigan narsani kiritamiz - vektor qiymatlarini yuqoridan va pastdan kesib tashlash. Ha, yana bir muhim eslatma: nostandart yo'qotishni asosiy asos nuqtai nazaridan tasvirlash kerak bo'lishi mumkin, ammo biz Keras bilan shug'ullanishimiz mumkin.


keras import backend dan K sifatida


epsilon = 1,0e-9
def custom_objective (y_true, y_pred):
'' "Yana yana bir o'zaro entropiya" ''
y_pred = K.clip (y_pred, epsilon, 1.0 - epsilon)
y_pred / = K.sum (y_pred, eksa = -1, keepdims = rost)
cce = toifali_krossentropiya (y_pred, y_true)
cce qaytish

Bu erda y_true va y_pred Tensorflow tensorlari, shuning uchun ularni boshqarish uchun Tensorflow funksiyalaridan foydalaniladi.


Boshqa yo'qotish funksiyasidan foydalanish uchun kompilyatsiya funksiyasining yo'qotish parametrining qiymatlarini u yerga yo'qotish funksiyamiz ob'ektini o'tkazish orqali o'zgartirish kifoya (Pythonda funksiyalar ham ob'ektlardir, garchi bu butunlay boshqacha hikoya bo'lsa ham):


model.compile (yo'qotish = custom_objective,


optimallashtiruvchi = 'adam',
ko'rsatkichlar = ['aniqlik'])

Trening va sinov


Nihoyat, modelni o'rgatish vaqti keldi:


tarix = model.fit (x_train, y_train,


batch_size = to'plam_sizi,
davrlar = davrlar,
batafsil = 1,
validation_split = 0.1)

Fit usuli aynan shunday qiladi. U o'quv namunasini yorliqlar bilan birga kiritish sifatida qabul qiladi - x_train va y_train, bir vaqtning o'zida taqdim etiladigan misollar sonini cheklaydigan to'plam hajmi, ta'lim davrlari uchun davrlar sonini (bir davr - to'liq o'tgan o'quv namunasi). model bir marta), shuningdek, tekshirish uchun qancha ta'lim namunasi berilishi kerak - validation_split.


Bu usul tarixni qaytaradi - bu o'rganishning har bir bosqichidagi xatolar tarixi.


Nihoyat, sinov. Baholash usuli kirish sifatida sinov namunasini va uning belgilarini oladi. Ko'rsatkich ishga tayyorgarlik jarayonida o'rnatilgan, shuning uchun boshqa hech narsa kerak emas. (Ammo biz partiyaning hajmini ham ko'rsatamiz).


ball = model.evaluate (x_test, y_test, batch_size = partiya_sizi)


Qayta qo'ng'iroqlar


Shuningdek, Kerasning qayta qo'ng'iroq qilish kabi muhim xususiyati haqida bir necha so'z aytishim kerak. Ular orqali juda ko'p foydali funksiyalar amalga oshiriladi. Misol uchun, agar siz tarmoqni juda uzoq vaqt davomida o'rgatayotgan bo'lsangiz, ma'lumotlar to'plamidagi xatolik pasayishni to'xtatgan bo'lsa, qachon to'xtatish kerakligini tushunishingiz kerak. Ingliz tilida tavsiflangan funksiya "erta to'xtash" deb ataladi. Keling, tarmoqni o'rgatishda uni qanday qo'llash mumkinligini ko'rib chiqaylik:


keras.callbacks import EarlyStopping dan 


erta_to'xtatish = Erta to'xtatish (monitor = "qiymatni_yo'qotish") 
tarix = model.fit (x_train, y_train,
batch_size = to'plam_sizi,
davrlar = davrlar,
batafsil = 1,
validation_split = 0,1,
qayta qo'ng'iroqlar = [erta_to'xtatish])

Tajriba o'tkazing va bizning misolimizda erta to'xtash qanchalik tez ishlashini tekshiring?


Tensorboard


Shuningdek, qayta qo'ng'iroq sifatida siz Tensorboard uchun qulay formatda saqlash jurnallaridan foydalanishingiz mumkin ( Tensorflow , qisqasi, Tensorflow jurnallaridan ma'lumotlarni qayta ishlash va vizualizatsiya qilish uchun maxsus yordamchi dastur).


keras.callbacks dan TensorBoard import 


tensorboard = TensorBoard (log_dir = '. / logs', write_graph = rost)
tarix = model.fit (x_train, y_train,
batch_size = to'plam_sizi,
davrlar = davrlar,
batafsil = 1,
validation_split = 0,1,
qayta qo'ng'iroqlar = [tensorboard])

O'quv qo'llanmasi tugagandan so'ng (yoki hatto jarayonda ham!), Tensorboard-ni loglar katalogiga mutlaq yo'lni ko'rsatish orqali boshlashingiz mumkin : 


tensorboard --logdir = / path / to / logs


U erda, masalan, tekshirish to'plamida maqsadli ko'rsatkich qanday o'zgarganini ko'rishingiz mumkin :



(Aytgancha, bu erda bizning tarmog'imiz qayta o'qitilayotganini ko'rishingiz mumkin.)

Kengaytirilgan grafiklar


Endi biroz murakkabroq hisoblash grafigini qurishni ko'rib chiqamiz. Neyron tarmoq juda ko'p kirish va chiqishlarga ega bo'lishi mumkin, kirish ma'lumotlari turli xil xaritalashlar orqali o'zgartirilishi mumkin. Murakkab grafiklarning qismlarini (xususan, uzatishni o'rganish uchun) qayta ishlatish uchun modelni modulli uslubda tasvirlash mantiqan to'g'ri keladi, bu sizga modelning qismlarini yangi kiritilgan ma'lumotlarga qulay tarzda olish, saqlash va qo'llash imkonini beradi. 


Yuqorida tavsiflangan Funktsional API va Sequential API-ni aralashtirish orqali modelni tavsiflash eng qulaydir .


Keling, misol sifatida Siam Network modelidan foydalangan holda ushbu yondashuvni ko'rib chiqaylik. Foydali xususiyatlarga ega vektor tasvirlarini olish uchun shunga o'xshash modellar amalda faol qo'llaniladi. Masalan, shunga o'xshash model yuzlarning fotosuratlarini vektorlarga o'rganish uchun ishlatilishi mumkin, shunda o'xshash yuzlar uchun vektorlar bir-biriga yaqin bo'ladi. Xususan, FindFace kabi rasm qidirish ilovalari bundan foydalanadi.


Modelning rasmini diagrammada ko'rish mumkin:





Bu erda G funksiyasi kiritilgan tasvirni vektorga aylantiradi, shundan so'ng bir juft tasvir uchun vektorlar orasidagi masofa hisoblab chiqiladi. Agar rasmlar bir sinfdan bo'lsa, masofani minimallashtirish kerak, agar turli sinflardan bo'lsa, masofani maksimal darajada oshirish kerak.


Bunday neyron tarmoq o'qitilgandan so'ng, biz ixtiyoriy tasvirni vektor G (x) sifatida taqdim eta olamiz va bu tasvirdan eng yaqin tasvirlarni topish uchun yoki boshqa mashinani o'rganish algoritmlari uchun xususiyat vektori sifatida foydalanamiz.


Biz modelni kodda shunga mos ravishda tasvirlab beramiz, bu esa neyron tarmoq qismlarini ajratib olish va qayta ishlatishni imkon qadar osonlashtiradi.


Birinchidan, biz Keras-da kirish vektorini taqqoslaydigan funksiyani aniqlaymiz.


def create_base_network (input_dim):


seq = Ketma-ket ()
seq.add (Zich (128, kirish_shakli = (input_dim,), faollashtirish = "relu"))
seq.add (To'xtash (0,1))
seq.add (Zich (128, faollashtirish = 'relu'))
seq.add (To'xtash (0,1))
seq.add (Zich (128, faollashtirish = 'relu'))
qaytish ketma-ketligi

Esda tutingki, biz modelni Sequential API yordamida tasvirlab berdik , lekin uning yaratilishini funksiyaga o‘rab oldik . Endi biz ushbu funksiyani chaqirish orqali bunday modelni yaratishimiz va uni Funktsional API yordamida kirishga qo'llashimiz mumkin :


base_tarmoq = yaratish_baza_tarmoq (input_dim)


input_a = Kirish (shakl = (input_dim,))
input_b = Kirish (shakl = (input_dim,))
ishlov berilgan_a = tayanch_tarmoq (kirish_a)
ishlov berilgan_b = tayanch_tarmoq (kirish_b)

processed_a va processed_b o'zgaruvchilari endi kiritilgan ma'lumotlarga ilgari belgilangan tarmoqni qo'llash orqali olingan vektor tasvirlarini o'z ichiga oladi.


Ularning orasidagi masofani hisoblashingiz kerak. Buning uchun Keras har qanday ifodani qatlam sifatida ifodalovchi Lambda oʻrami funksiyasini taqdim etadi . Shuni unutmangki, biz ma'lumotlarni to'plamlarda qayta ishlaymiz, shuning uchun barcha tensorlar har doim partiyaning o'lchamiga javob beradigan qo'shimcha o'lchamga ega. 


keras import backend dan K sifatida


def evklid_masofasi (vects):
x, y = vektlar
qaytish K.sqrt (K.sum (K.kvadrat (x - y), eksa = 1, keepdims = True))
masofa = Lambda (evklid_masofasi) ([ishlangan_a, ishlov berilgan_b])

Ajoyib, biz ichki ko'rinishlar orasidagi masofani oldik, endi kirishlar va masofani bitta modelga to'plash qoladi.


model = Model ([input_a, input_b], masofa)


Modulli tuzilma tufayli biz base_network-dan alohida foydalanishimiz mumkin , bu ayniqsa modelni o'rgatgandan keyin foydalidir. Buni qanday qilishim mumkin? Keling, modelimiz qatlamlarini ko'rib chiqaylik:


>>> model.qatlamlar


[, , 4.f]

Biz modellar turi ro'yxatida uchinchi ob'ektni ko'ramiz.Sequential. Bu kirish tasvirini vektor bilan taqqoslaydigan model. Uni ajratib olish va uni to'liq model sifatida ishlatish uchun (siz qayta o'qitish, tasdiqlash, boshqa grafikga joylashtirishingiz mumkin), shunchaki uni qatlamlar ro'yxatidan chiqarib tashlashingiz kerak: 


>>> embedding_model = model.layers [2]


>>> embedding_model.layers
[, , , , ]

Misol uchun, MNIST ma'lumotlari bo'yicha allaqachon o'qitilgan Siam tarmog'i uchun base_model chiqishida ikki o'lchamli , vektor ko'rinishlarini quyidagicha tasvirlash mumkin: 


Keling, ma'lumotlarni yuklaymiz va 28x28 tasvirlarni tekis vektorlarga aylantiramiz.


(x_train, y_train), (x_test, y_test) = mnist.load_data ()


x_test = x_test.reshape (10000, 784)

Oldindan olingan model yordamida rasmlarni ko'rsatamiz:


embeddings = embedding_model.predict (x_test)


Endi o'rnatishlar ikki o'lchovli vektorlarni o'z ichiga oladi, ularni tekislikda tasvirlash mumkin:



Siam tarmog'ining to'liq misolini bu erda ko'rish mumkin . 


Xulosa

Mana, biz birinchi Keras modellarini yaratdik! Umid qilamizki, u taqdim etayotgan imkoniyatlar sizni qiziqtiradi, shuning uchun siz undan o'z ishingizda foydalanasiz.

Kerasning ijobiy va salbiy tomonlarini muhokama qilish vaqti keldi. Aniq afzalliklarga modellarni yaratishning soddaligi kiradi, bu esa prototiplashning yuqori tezligiga aylanadi. Misol uchun, yaqinda sun'iy yo'ldoshlar haqidagi maqola mualliflari Kerasdan foydalanganlar. Umuman olganda, ushbu ramka tobora ommalashib bormoqda:





Keras bir yil ichida ilmiy maqolalardagi eslatmalarga ko'ra, 5 yildan beri ishlab chiqilayotgan Torchni ushladi. Keras muallifi Fransua Chollet foydalanish qulayligi maqsadiga erishganga o'xshaydi. Bundan tashqari, uning tashabbusi e'tibordan chetda qolmadi: atigi bir necha oylik rivojlanishdan so'ng Google uni Tensorflowni ishlab chiquvchi jamoada buni qilishni taklif qildi. Shuningdek, Tensorflow 1.2 Keras TF (tf.keras) tarkibiga kiradi.


Kamchiliklar haqida ham bir necha so'z aytishim kerak. Afsuski, Kerasning kodning universalligi haqidagi g'oyasi har doim ham bajarilmaydi: Keras 2.0 birinchi versiya bilan moslikni buzdi, ba'zi funksiyalar boshqacha chaqirila boshlandi, ba'zilari ko'chirildi, umuman olganda, hikoya ikkinchi va uchinchi pitonga o'xshaydi. Farqi shundaki, Keras misolida ishlab chiqish uchun faqat ikkinchi versiya tanlangan. Bundan tashqari, Keras kodi Tensorflow-da Theano-ga qaraganda sekinroq ishlaydi (garchi ramkalar hech bo'lmaganda mahalliy kod bilan solishtirish mumkin ). 


Umuman olganda, Kerasni ma'lum bir vazifa uchun tarmoqni tezda qurish va sinab ko'rish kerak bo'lganda foydalanish uchun tavsiya qilishingiz mumkin. Ammo, agar sizga nostandart qatlam yoki bir nechta GPU-larda parallellashtiruvchi kod kabi murakkab narsalar kerak bo'lsa, unda asosiy ramkadan foydalanish yaxshiroq (va ba'zan shunchaki muqarrar).

 

.TensorFlow: Mashinani o'rganishning zamonaviy kutubxonasi


TensorFlow — Google tomonidan yaratilgan ochiq kodli kutubxona boʻlib, u mashinani oʻrganish texnologiyalaridan foydalanadigan tizimlarni ishlab chiqishda foydalaniladi. Ushbu kutubxona umumiy mashinani o'rganish muammolarini hal qilish uchun mo'ljallangan ko'plab kuchli algoritmlarni amalga oshirishni o'z ichiga oladi, jumladan naqshni aniqlash va qaror qabul qilish.
TensorFlow loyihasi 2015 yilda Google tomonidan ochiq manbaga aylantirilgan. Uning oldingi loyihasi DistBelief loyihasi edi va u bilan ko'p yillik tajriba TensorFlow-da o'z aksini topdi.

TensorFlow kutubxonasini ishlab chiquvchilar uni moslashuvchan, samarali, kengaytiriladigan va portativ qilishga intilishdi. Natijada, u mobil qurilmalar tomonidan yaratilganlardan tortib, ulkan klasterlar bilan ifodalanadigan turli xil hisoblash muhitlarida ishlatilishi mumkin. Kutubxona sizga o'qitilgan modellarni tezda haqiqiy ish uchun tayyorlash imkonini beradi, bu esa ishlab chiqarish maqsadlari uchun modellarning maxsus ilovalarini yaratish zaruratini yo'q qiladi.

TensorFlow kutubxonasi, bir tomondan, ochiq manbalar hamjamiyatining e'tiborini tortadi va innovatsiyalarga ochiq bo'lsa, ikkinchi tomondan, u yirik korporatsiya tomonidan qo'llab-quvvatlanadi. Bu uning barqaror rivojlanishi uchun barcha imkoniyatlarga ega ekanligini aytishga imkon beradi.

Ushbu kutubxona, unda ishlaydigan barcha kishilarning birgalikdagi sa'y-harakatlari tufayli barcha o'lchamdagi muammolarni hal qilish uchun mos keladi. Mustaqil ishlab chiquvchiga duch kelganlardan tortib, startaplar va hatto Google kabi yirik kompaniyalargacha. Ushbu kutubxona ochiq manbaga aylangan paytdan boshlab, 2015 yil noyabr oyida u mashinani o'rganish bo'yicha eng qiziqarli kutubxonalardan biriga aylandi. U tadqiqotda, real ilovalarni ishlab chiqishda, o'qitishda tobora ko'proq foydalanilmoqda.

TensorFlow doimiy ravishda takomillashtiriladi, u doimo yangi va optimallashtirilgan narsalar bilan ta'minlanadi. Qolaversa, ushbu kutubxona atrofidagi jamoa ham kengayib bormoqda.

TensorFlow nomi haqida



Tensor - bu chuqur o'rganish tizimlarida ma'lumotlarni taqdim etishning standart usuli. Tensorlar - bu ko'p o'lchovli massivlar, ikki o'lchovli jadvallarning (matritsalarning) kattaroq o'lchamli ma'lumotlarni ko'rsatish uchun kengaytmalari. Oddiy qilib aytganda, tensor n o'lchovli matritsadir.

Umuman olganda, agar siz matritsalar bilan ishlashga odatlangan bo'lsangiz, matritsalar haqida o'ylaganingizdek, tensorlar haqida ham o'ylashingiz mumkin.
https://www.machinelearningmastery.ru/the-complete-tensorflow-tutorial-for-newbies-dc3acc1310f8/
Mana ilova
https://ru-keras.com/home/
15-ma'ruza. Kompyuter ko'rish texnologiyalarini chuqur o'rganish

Download 1,46 Mb.

Do'stlaringiz bilan baham:
1   ...   59   60   61   62   63   64   65   66   ...   71




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