{"id":901,"date":"2023-01-02T07:35:05","date_gmt":"2023-01-02T07:35:05","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=901"},"modified":"2023-01-02T07:35:05","modified_gmt":"2023-01-02T07:35:05","slug":"konvolutsiooniline-narvivork-convolutional-neural-network","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/konvolutsiooniline-narvivork-convolutional-neural-network\/","title":{"raw":"Konvolutsiooniline n\u00e4rviv\u00f5rk (Convolutional Neural Network)","rendered":"Konvolutsiooniline n\u00e4rviv\u00f5rk (Convolutional Neural Network)"},"content":{"raw":"<h1 id=\"image-recognition-cnn--page-root\">Konvolutsiooniline n\u00e4rviv\u00f5rk (<em>Convolutional Neural Network<\/em>)<a class=\"headerlink\" title=\"Permalink to this heading\" href=\"#image-recognition-cnn--page-root\">\uf0c1<\/a><\/h1>\r\nKonvolutsioonilisi n\u00e4rviv\u00f5rke (<em>Convolutional Neural Network<\/em> - CNN) kasutatakse pildi klassifitseerimiseks (<em>image classification<\/em> - mis objekt on pildil millise t\u00f5en\u00e4osusega), objekti tuvastamiseks (<em>object detection<\/em> - tuvastatakse mitmed objektid pildilt), objekti segmenteerimiseks (<em>object segmentation<\/em> - milline piksel pildilt kuulub millist t\u00fc\u00fcpi objektile).\r\n<figure id=\"id1\" class=\"align-default\"><figcaption>\r\n\r\n[caption id=\"attachment_905\" align=\"alignnone\" width=\"1024\"]<img class=\"wp-image-905 size-large\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-1024x426.png\" alt=\"Pildi tuvastamise t\u00fc\u00fcbid\" width=\"1024\" height=\"426\" \/> Klassifitseerimise ja tuvastamise vahe. Pildi allikas: <a href=\"https:\/\/analyticsindiamag.com\/top-5-image-classification-research-papers-every-data-scientist-should-know\/\">https:\/\/analyticsindiamag.com\/top-5-image-classification-research-papers-every-data-scientist-should-know\/<\/a>[\/caption]\r\n\r\n<\/figcaption><\/figure>\r\nCNN t\u00f6\u00f6p\u00f5him\u00f5te on saanud inspiratsiooni juba <a class=\"reference external\" href=\"http:\/\/klab.tch.harvard.edu\/academia\/classes\/Neuro230\/2014\/readings\/reading_assignment2_gk1852.pdf\">1960ndatel aastatel l\u00e4biviidud teadusuuringust<\/a> loomade n\u00e4gemisest. Nad on oma uuringute tulemusena saanud ka Nobeli preemia 1981. aastal. Nad panid t\u00e4hele, et kassi neuron aktiveerus kui n\u00e4gemisalas teatud piirkonnas n\u00e4idati valgust. Ehk siis \u00fcks neuron reageerib vaid teatud piirkonnale kogu n\u00e4htavast alast. Need erinevad piirkonnad on v\u00e4ikese \u00fclekattega. Kokku katavad nad \u00e4ra kogu n\u00e4htava ala. Sarnast loogikat kasutatakse ka CNN puhul.\r\n\r\n[caption id=\"attachment_904\" align=\"alignnone\" width=\"678\"]<img class=\"wp-image-904 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/hubel-experiment.jpg\" alt=\"Hubel ja Wiesel eksperiment kassiga\" width=\"678\" height=\"449\" \/> Hubel ja Wiesel eksperiment. Pildi allikas <a href=\"https:\/\/goodpsychology.wordpress.com\/2013\/03\/13\/235\/\">https:\/\/goodpsychology.wordpress.com\/2013\/03\/13\/235\/<\/a>[\/caption]\r\n<figure id=\"id2\" class=\"align-default\"><\/figure>\r\nP\u00f5hjalikumalt CNN ajaloo kohta saab lugeda n\u00e4iteks siit: <a class=\"reference external\" href=\"https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies\">https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies<\/a>\r\n\r\nN\u00e4rviv\u00f5rk koosneb erinevatest kihtidest. K\u00f5ige esimene kiht on sisendkiht, kuhu antakse sisendandmed. Kiht koosneb neuronitest, millest iga\u00fcks t\u00e4histab mingit v\u00e4\u00e4rtust sisendi kohta. Sisendile j\u00e4rgneb mitu peidetud kihti, mis samamoodi koosnevad neuronitest. Tavap\u00e4raselt liigub igast sisendneuronist infot igasse j\u00e4rgmise peidetud kihi neuronisse. Neuronite arv peidetud kihil v\u00f5ib olla erinev sisendkihil olevatest. Peidetud kihte v\u00f5ib olla mitu t\u00fckki. Igal kihil v\u00f5ib omakorda olla erinev hulk neuroneid. Peale viimast peidetud kihti liiguvad andmed v\u00e4ljundkihti, mis n\u00e4iteks \u00fctleb, millisesse klassi antud sisend kuulub. V\u00e4ljundkihis v\u00f5ib ka mitu neuronit olla. Info liigub vasakult paremale. Peidetud kihi neuronid on justkui funktsioonid, mis arvutavad sissetulnud andmete pealt uue v\u00e4\u00e4rtuse, mis siis omakorda antakse edasi j\u00e4rgmisele kihile. Seda funktsiooni, mis arvutab sisendi pealt uue tulemuse nimetatakse aktivatsioonifunktsiooniks.\r\n\r\n[caption id=\"attachment_906\" align=\"alignnone\" width=\"791\"]<img class=\"size-full wp-image-906\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2.jpeg\" alt=\"N\u00e4rviv\u00f5rk peidetud kihtidega\" width=\"791\" height=\"388\" \/> N\u00e4rviv\u00f5rk, kus vasakul on sisendkiht (<em>input layer<\/em>), sellele j\u00e4rgnevad kaks peidetud kihti (<em>hidden layer<\/em>) ja k\u00f5ige paremal on v\u00e4ljundi kiht (<em>output layer<\/em>). Info sisestatakse sisendkihti ja liigub seej\u00e4rel vasakult paremale. L\u00f5puks on v\u00e4ljundiks n\u00e4iteks info, kas pildil on kass v\u00f5i mitte. Pildi allikas: <a href=\"https:\/\/cs231n.github.io\/convolutional-networks\/\">https:\/\/cs231n.github.io\/convolutional-networks\/<\/a>[\/caption]\r\n<figure id=\"id3\" class=\"align-default\"><\/figure>\r\nIga \u00fchendus j\u00e4rgmise kihiga omab kaalu. Neuron v\u00f5tab k\u00f5ik \u00fchenduste kaudu tulevad v\u00e4\u00e4rtused, korrutab need \u00fchenduste kaaludega ja summeerib kokku. Sedasi saadakse sisendi kaalutud summa, mis on sisendiks aktivatsioonifunktsioonile.\r\n\r\n<section id=\"konvolutsiooniline-narvivork\">\r\n<h2 id=\"konvolutsiooniline-narvivork\">Konvolutsiooniline n\u00e4rviv\u00f5rk<a class=\"headerlink\" title=\"Permalink to this heading\" href=\"#konvolutsiooniline-narvivork\">\uf0c1<\/a><\/h2>\r\nPiltidega tegelemiseks kasutatakse konvolutsioonilisi n\u00e4rviv\u00f5rke. Tavalise n\u00e4rviv\u00f5rgu probleem on see, et kui sisendiks on pildi pikslid (nende v\u00e4\u00e4rtus n\u00e4iteks v\u00e4rvi ja\/v\u00f5i v\u00e4rvitugevusena), siis n\u00e4rviv\u00f5rgu jaoks on need andmed \u00fche pika vektorina ning pikslite asukohta ei v\u00f5eta arvesse. Konvolutsioonilise n\u00e4rviv\u00f5rgu korral saadetakse j\u00e4rgmisesse kihti vaid l\u00e4hestikku paiknevad neuronid. Ehk kui tavalise n\u00e4rviv\u00f5rgu puhul j\u00f5uavad sisendkihist esimese peidetud kihi neuronini iga sisendneuroni info, siis konvolutsioonilise n\u00e4rviv\u00f5rgu puhul vaid mingi v\u00e4iksem alamhulk. Kui n\u00e4iteks pildi m\u00f5\u00f5tmed on 1000 x 1000 pikslit, siis v\u00f5ib \u00fcks v\u00e4ike alamosa olla 10x10 pikslit (v\u00f5i isegi v\u00e4iksem).\r\n\r\n<\/section><section id=\"lisalugemist\">\r\n<h2 id=\"lisalugemist\">Lisalugemist<a class=\"headerlink\" title=\"Permalink to this heading\" href=\"#lisalugemist\">\uf0c1<\/a><\/h2>\r\n<ul class=\"simple\">\r\n \t<li><a class=\"reference external\" href=\"https:\/\/cs231n.github.io\/convolutional-networks\/\">https:\/\/cs231n.github.io\/convolutional-networks\/<\/a><\/li>\r\n \t<li><a class=\"reference external\" href=\"https:\/\/towardsdatascience.com\/wtf-is-image-classification-8e78a8235acb\">https:\/\/towardsdatascience.com\/wtf-is-image-classification-8e78a8235acb<\/a><\/li>\r\n \t<li><a class=\"reference external\" href=\"https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies\">https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies<\/a><\/li>\r\n \t<li><a class=\"reference external\" href=\"https:\/\/courses.cs.ut.ee\/2020\/Tehisintellekti_algkursus\/spring\/Main\/PARTIIIVorgud\">https:\/\/courses.cs.ut.ee\/2020\/Tehisintellekti_algkursus\/spring\/Main\/PARTIIIVorgud<\/a><\/li>\r\n<\/ul>\r\n<\/section>","rendered":"<h1 id=\"image-recognition-cnn--page-root\">Konvolutsiooniline n\u00e4rviv\u00f5rk (<em>Convolutional Neural Network<\/em>)<a class=\"headerlink\" title=\"Permalink to this heading\" href=\"#image-recognition-cnn--page-root\">\uf0c1<\/a><\/h1>\n<p>Konvolutsioonilisi n\u00e4rviv\u00f5rke (<em>Convolutional Neural Network<\/em> &#8211; CNN) kasutatakse pildi klassifitseerimiseks (<em>image classification<\/em> &#8211; mis objekt on pildil millise t\u00f5en\u00e4osusega), objekti tuvastamiseks (<em>object detection<\/em> &#8211; tuvastatakse mitmed objektid pildilt), objekti segmenteerimiseks (<em>object segmentation<\/em> &#8211; milline piksel pildilt kuulub millist t\u00fc\u00fcpi objektile).<\/p>\n<figure id=\"id1\" class=\"align-default\"><figcaption>\n<figure id=\"attachment_905\" aria-describedby=\"caption-attachment-905\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-905 size-large\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-1024x426.png\" alt=\"Pildi tuvastamise t\u00fc\u00fcbid\" width=\"1024\" height=\"426\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-1024x426.png 1024w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-300x125.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-768x320.png 768w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-1536x639.png 1536w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-65x27.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-225x94.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection-350x146.png 350w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/localization_vs_detection.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption id=\"caption-attachment-905\" class=\"wp-caption-text\">Klassifitseerimise ja tuvastamise vahe. Pildi allikas: <a href=\"https:\/\/analyticsindiamag.com\/top-5-image-classification-research-papers-every-data-scientist-should-know\/\">https:\/\/analyticsindiamag.com\/top-5-image-classification-research-papers-every-data-scientist-should-know\/<\/a><\/figcaption><\/figure>\n<\/figcaption><\/figure>\n<p>CNN t\u00f6\u00f6p\u00f5him\u00f5te on saanud inspiratsiooni juba <a class=\"reference external\" href=\"http:\/\/klab.tch.harvard.edu\/academia\/classes\/Neuro230\/2014\/readings\/reading_assignment2_gk1852.pdf\">1960ndatel aastatel l\u00e4biviidud teadusuuringust<\/a> loomade n\u00e4gemisest. Nad on oma uuringute tulemusena saanud ka Nobeli preemia 1981. aastal. Nad panid t\u00e4hele, et kassi neuron aktiveerus kui n\u00e4gemisalas teatud piirkonnas n\u00e4idati valgust. Ehk siis \u00fcks neuron reageerib vaid teatud piirkonnale kogu n\u00e4htavast alast. Need erinevad piirkonnad on v\u00e4ikese \u00fclekattega. Kokku katavad nad \u00e4ra kogu n\u00e4htava ala. Sarnast loogikat kasutatakse ka CNN puhul.<\/p>\n<figure id=\"attachment_904\" aria-describedby=\"caption-attachment-904\" style=\"width: 678px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-904 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/hubel-experiment.jpg\" alt=\"Hubel ja Wiesel eksperiment kassiga\" width=\"678\" height=\"449\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/hubel-experiment.jpg 678w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/hubel-experiment-300x199.jpg 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/hubel-experiment-65x43.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/hubel-experiment-225x149.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/hubel-experiment-350x232.jpg 350w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><figcaption id=\"caption-attachment-904\" class=\"wp-caption-text\">Hubel ja Wiesel eksperiment. Pildi allikas <a href=\"https:\/\/goodpsychology.wordpress.com\/2013\/03\/13\/235\/\">https:\/\/goodpsychology.wordpress.com\/2013\/03\/13\/235\/<\/a><\/figcaption><\/figure>\n<figure id=\"id2\" class=\"align-default\"><\/figure>\n<p>P\u00f5hjalikumalt CNN ajaloo kohta saab lugeda n\u00e4iteks siit: <a class=\"reference external\" href=\"https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies\">https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies<\/a><\/p>\n<p>N\u00e4rviv\u00f5rk koosneb erinevatest kihtidest. K\u00f5ige esimene kiht on sisendkiht, kuhu antakse sisendandmed. Kiht koosneb neuronitest, millest iga\u00fcks t\u00e4histab mingit v\u00e4\u00e4rtust sisendi kohta. Sisendile j\u00e4rgneb mitu peidetud kihti, mis samamoodi koosnevad neuronitest. Tavap\u00e4raselt liigub igast sisendneuronist infot igasse j\u00e4rgmise peidetud kihi neuronisse. Neuronite arv peidetud kihil v\u00f5ib olla erinev sisendkihil olevatest. Peidetud kihte v\u00f5ib olla mitu t\u00fckki. Igal kihil v\u00f5ib omakorda olla erinev hulk neuroneid. Peale viimast peidetud kihti liiguvad andmed v\u00e4ljundkihti, mis n\u00e4iteks \u00fctleb, millisesse klassi antud sisend kuulub. V\u00e4ljundkihis v\u00f5ib ka mitu neuronit olla. Info liigub vasakult paremale. Peidetud kihi neuronid on justkui funktsioonid, mis arvutavad sissetulnud andmete pealt uue v\u00e4\u00e4rtuse, mis siis omakorda antakse edasi j\u00e4rgmisele kihile. Seda funktsiooni, mis arvutab sisendi pealt uue tulemuse nimetatakse aktivatsioonifunktsiooniks.<\/p>\n<figure id=\"attachment_906\" aria-describedby=\"caption-attachment-906\" style=\"width: 791px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-906\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2.jpeg\" alt=\"N\u00e4rviv\u00f5rk peidetud kihtidega\" width=\"791\" height=\"388\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2.jpeg 791w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2-300x147.jpeg 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2-768x377.jpeg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2-65x32.jpeg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2-225x110.jpeg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2023\/01\/neural_net2-350x172.jpeg 350w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><figcaption id=\"caption-attachment-906\" class=\"wp-caption-text\">N\u00e4rviv\u00f5rk, kus vasakul on sisendkiht (<em>input layer<\/em>), sellele j\u00e4rgnevad kaks peidetud kihti (<em>hidden layer<\/em>) ja k\u00f5ige paremal on v\u00e4ljundi kiht (<em>output layer<\/em>). Info sisestatakse sisendkihti ja liigub seej\u00e4rel vasakult paremale. L\u00f5puks on v\u00e4ljundiks n\u00e4iteks info, kas pildil on kass v\u00f5i mitte. Pildi allikas: <a href=\"https:\/\/cs231n.github.io\/convolutional-networks\/\">https:\/\/cs231n.github.io\/convolutional-networks\/<\/a><\/figcaption><\/figure>\n<figure id=\"id3\" class=\"align-default\"><\/figure>\n<p>Iga \u00fchendus j\u00e4rgmise kihiga omab kaalu. Neuron v\u00f5tab k\u00f5ik \u00fchenduste kaudu tulevad v\u00e4\u00e4rtused, korrutab need \u00fchenduste kaaludega ja summeerib kokku. Sedasi saadakse sisendi kaalutud summa, mis on sisendiks aktivatsioonifunktsioonile.<\/p>\n<section id=\"konvolutsiooniline-narvivork\">\n<h2 id=\"konvolutsiooniline-narvivork\">Konvolutsiooniline n\u00e4rviv\u00f5rk<a class=\"headerlink\" title=\"Permalink to this heading\" href=\"#konvolutsiooniline-narvivork\">\uf0c1<\/a><\/h2>\n<p>Piltidega tegelemiseks kasutatakse konvolutsioonilisi n\u00e4rviv\u00f5rke. Tavalise n\u00e4rviv\u00f5rgu probleem on see, et kui sisendiks on pildi pikslid (nende v\u00e4\u00e4rtus n\u00e4iteks v\u00e4rvi ja\/v\u00f5i v\u00e4rvitugevusena), siis n\u00e4rviv\u00f5rgu jaoks on need andmed \u00fche pika vektorina ning pikslite asukohta ei v\u00f5eta arvesse. Konvolutsioonilise n\u00e4rviv\u00f5rgu korral saadetakse j\u00e4rgmisesse kihti vaid l\u00e4hestikku paiknevad neuronid. Ehk kui tavalise n\u00e4rviv\u00f5rgu puhul j\u00f5uavad sisendkihist esimese peidetud kihi neuronini iga sisendneuroni info, siis konvolutsioonilise n\u00e4rviv\u00f5rgu puhul vaid mingi v\u00e4iksem alamhulk. Kui n\u00e4iteks pildi m\u00f5\u00f5tmed on 1000 x 1000 pikslit, siis v\u00f5ib \u00fcks v\u00e4ike alamosa olla 10&#215;10 pikslit (v\u00f5i isegi v\u00e4iksem).<\/p>\n<\/section>\n<section id=\"lisalugemist\">\n<h2 id=\"lisalugemist\">Lisalugemist<a class=\"headerlink\" title=\"Permalink to this heading\" href=\"#lisalugemist\">\uf0c1<\/a><\/h2>\n<ul class=\"simple\">\n<li><a class=\"reference external\" href=\"https:\/\/cs231n.github.io\/convolutional-networks\/\">https:\/\/cs231n.github.io\/convolutional-networks\/<\/a><\/li>\n<li><a class=\"reference external\" href=\"https:\/\/towardsdatascience.com\/wtf-is-image-classification-8e78a8235acb\">https:\/\/towardsdatascience.com\/wtf-is-image-classification-8e78a8235acb<\/a><\/li>\n<li><a class=\"reference external\" href=\"https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies\">https:\/\/www.esantus.com\/blog\/2019\/1\/31\/convolutional-neural-networks-a-quick-guide-for-newbies<\/a><\/li>\n<li><a class=\"reference external\" href=\"https:\/\/courses.cs.ut.ee\/2020\/Tehisintellekti_algkursus\/spring\/Main\/PARTIIIVorgud\">https:\/\/courses.cs.ut.ee\/2020\/Tehisintellekti_algkursus\/spring\/Main\/PARTIIIVorgud<\/a><\/li>\n<\/ul>\n<\/section>\n","protected":false},"author":36,"menu_order":2,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-901","chapter","type-chapter","status-publish","hentry"],"part":784,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/36"}],"version-history":[{"count":1,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/901\/revisions"}],"predecessor-version":[{"id":909,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/901\/revisions\/909"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/784"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/901\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=901"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=901"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=901"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}