{"id":54494,"date":"2019-12-27T00:00:00","date_gmt":"2019-12-26T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning"},"modified":"2020-02-18T14:02:30","modified_gmt":"2020-02-18T11:02:30","slug":"dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","title":{"rendered":"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cca85b86c64843707a2167a7fed19867.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ees on taas objektide tuvastamise \u00fclesanne. Peamine prioriteet on t\u00f6\u00f6 kiirus vastuv\u00f5etava t\u00e4psuse juures. Kasutad YOLOv3 arhitektuuri ja t\u00e4iendad seda. T\u00e4psus (mAp75) \u00fcle 0.95. Kuid t\u00f6\u00f6tlemise kiirus on endiselt madal. Kuradi. <\/p>\n<p><\/p>\n<p>T\u00e4na j\u00e4tame kvantiseerimise k\u00f5rvale. Ja allpool vaatame <strong>Model Pruning<\/strong> \u2014 \u00fcleliigsete osade eemaldamine v\u00f5rgu kiirendamiseks ilma t\u00e4psuse kaotamiseta. Selgelt \u2014 kust, kui palju ja kuidas on v\u00f5imalik l\u00f5igata. Arutame, kuidas seda k\u00e4sitsi teha ja kus saab automatiseerida. L\u00f5pus \u2014 repository keras'e jaoks.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"vvedenie\">Sissejuhatus<\/h3>\n<p><\/p>\n<p>Eelmisel t\u00f6\u00f6kohtadel, permis Macroscopis, omandasin ma \u00fche harjumuse \u2014 alati j\u00e4lgida algoritmide t\u00e4itmise aega. Ja v\u00f5rgu t\u00f6\u00f6tlemise aega kontrollida alati adekvaatsuse filtri kaudu. Tavaliselt ei vasta state-of-the-art tootmises sellele filtrile, mis viis mind Pruning'uni. <\/p>\n<p><\/p>\n<p>Pruning \u2014 vana teema, millest r\u00e4\u00e4giti <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=eZdOkDtYMoo\">Stanfordi loengutes<\/a><\/noindex> 2017. aastal. Peamine idee \u2014 koolitatud v\u00f5rgu suuruse v\u00e4hendamine ilma t\u00e4psuse kaotamiseta, eemaldades mitmesuguseid s\u00f5lmi. K\u00f5lab h\u00e4sti, kuid ma harva kuulen selle rakendamisest. T\u00f5en\u00e4oliselt puuduvad rakendused, ei ole venekeelseid artikleid v\u00f5i lihtsalt peetakse pruning\u2019t omaette teadmisteks ja vaikivad.<br \/>\nAga l\u00e4heme siis arutama<\/p>\n<p><\/p>\n<h3 id=\"vzglyad-v-biologiyu\">Vaade bioloogiale<\/h3>\n<p><\/p>\n<p>Mulle meeldib, kui s\u00fcgavale \u00f5ppimisse toovad ideid bioloogiast. Neile, nagu ka evolutsioonile, v\u00f5ib usaldada (kas teadsite, et ReLU on v\u00e4ga sarnane <noindex><a rel=\"nofollow\" href=\"http:\/\/www.gatsby.ucl.ac.uk\/~lmate\/biblio\/dayanabbott.pdf\">ajurakkude aktiveerimise funktsiooniga<\/a><\/noindex>?) <\/p>\n<p><\/p>\n<p>Model Pruning protsess on samuti l\u00e4hedane bioloogiale. V\u00f5rgu reaktsiooni saab v\u00f5rrelda aju plastilisusega. Raamatus on paar huvitavat n\u00e4idet <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/norman-doydzh\/plastichnost-mozga\/?utm_medium=cpc&amp;utm_source=google&amp;utm_campaign=DSA%7C149839530&amp;utm_term=&amp;utm_content=k50id%7Caud-499675211712%3Adsa-179513627318%7Ccid%7C149839530%7Caid%7C248455294996%7Cgid%7C6837176850%7Cpos%7C1t1%7Csrc%7Cg_%7Cdvc%7Cc%7Creg%7C1011993%7Crin%7C%7C&amp;k50id=6837176850%7Caud-499675211712%3Adsa-179513627318&amp;gclid=Cj0KCQiA0ZHwBRCRARIsAK0Tr-oKPqkmL7_Oxg62JZO8Jlk9zO-9nYKIRFxHi_lgoCvsQQadvUGxUzkaApgpEALw_wcB\">Norman Doidge'i<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ol>\n<li>Naise aju, kellel oli s\u00fcndides vaid \u00fcks pool, programmeeris end ise \u00fcmber, et t\u00e4ita puuduvat poole funktsioone<\/li>\n<li>Noormees tulistas endale osa ajust, mis vastutab n\u00e4gemise eest. Aja jooksul v\u00f5tsid teised ajupiirkonnad need funktsioonid enda kanda. (ei p\u00fc\u00fca korrata)<\/li>\n<\/ol>\n<p><\/p>\n<p>Nii saab ka teie mudelist eemaldada osad n\u00f5rgad konvolutsioonid. \u00c4\u00e4rmisel juhul aitavad allesj\u00e4\u00e4nud konvolutsioonid asendada eemaldatud. <\/p>\n<p><\/p>\n<h3 id=\"lyubish-transfer-learning-ili-uchish-s-nulya\">Kas armastad Transfer Learningut v\u00f5i \u00f5pid algusest peale?<\/h3>\n<p><\/p>\n<p><strong>Variant number \u00fcks.<\/strong> Kasutad Transfer Learningut Yolov3-l. Retina, Mask-RCNN v\u00f5i U-Net. Kuid sageli pole meil vaja tuvastada 80 klassi objekte, nagu COCO-s. Minu praktikas piirduvad asjad 1-2 klassiga. V\u00f5ib eeldada, et 80 klassile m\u00f5eldud arhitektuur on siin \u00fcleliigne. Tundub, et see tuleks v\u00e4hendada. Ja oleks soovitav teha seda ilma olemasolevaid eel\u00f5petatud kehiseid kaotamata.<\/p>\n<p><\/p>\n<p><strong>Variant number kaks.<\/strong> V\u00f5ib-olla on sul palju andmeid ja arvutusv\u00f5imekust v\u00f5i lihtsalt vaja \u00fclireguleeritud arhitektuuri. Pole oluline. Kuid \u00f5pid v\u00f5rku algusest peale. Tavaline j\u00e4rjekord \u2014 vaatame andmestruktuuri, valime \u00dcLELIIGSE v\u00f5imsusega arhitektuuri ja pushime dropout'e \u00fcle\u00f5ppimise vastu. Olen n\u00e4inud dropout'e 0.6, Karl. <\/p>\n<p><\/p>\n<p>M\u00f5lemal juhul saab v\u00f5rku v\u00e4hendada. Oleme motiveeritud. N\u00fc\u00fcd liigume edasi arutama, mis asi see pruning on.<\/p>\n<p><\/p>\n<h3 id=\"obschiy-algoritm\">\u00dcldine algoritm<\/h3>\n<p><\/p>\n<p>Oleme otsustanud, et saame eemaldada konvolutsioonid. See tundub \u00fcsna lihtne:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1c01fa318d08550c9738c88d52e36b2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Iga konvolutsiooni eemaldamine on v\u00f5rgu jaoks stress, mis toob tavaliselt kaasa ka teatud t\u00f5usu vea. \u00dchelt poolt on see vea t\u00f5us m\u00e4rk sellest, kui \u00f5igesti me konvolutsioonide eemaldamisega tegeleme (n\u00e4iteks suur t\u00f5us \u00fctleb, et me teeme midagi valesti). Kuid v\u00e4ike t\u00f5us on t\u00e4iesti aktsepteeritav ja sageli k\u00f5rvaldatakse j\u00e4rgnevate kergete \u00f5petustega v\u00e4ikese LR-ga. Lisame \u00f5petamise etapi:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d51df9606d65fd4e7e80209743f761c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd peame aru saama, millal soovime l\u00f5petada meie Learning&lt;-&gt;Pruning ts\u00fckli. Siin v\u00f5ivad olla eksootilised variandid, kus peame v\u00f5rku v\u00e4hendama teatud suurusele ja t\u00f6\u00f6tlemise kiiruseni (n\u00e4iteks mobiilseadmete jaoks). Siiski on k\u00f5ige sagedasem variant \u2014 ts\u00fckli j\u00e4tkamine seni, kuni viga ei ole \u00fcle lubatud. Lisame tingimuse:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/9032018847833b54402124a29d3acbb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nii et algoritm on arusaadav. J\u00e4\u00e4b avatuks, kuidas m\u00e4\u00e4rata eemaldatavad konvolutsioonid.<\/p>\n<p><\/p>\n<h3 id=\"poisk-udalyaemyh-svertok\">Eemaldatavate konvolutsioonide otsimine<\/h3>\n<p><\/p>\n<p>Me peame eemaldama teatud pakked. \u00dcksikult r\u00fcnnates ja 'r\u00fcnnates' k\u00f5iki on halb m\u00f5te, kuigi see t\u00f6\u00f6tab. Kuid kuna meil on m\u00f5istus, saame m\u00f5elda ja proovida leida 'n\u00f5rgad' pakked, mis eemaldada. Valikuid on mitu:<\/p>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openreview.net\/pdf?id=rJqFGTslg\">V\u00e4ikseim L1-m\u00f5\u00f5de v\u00f5i low_magnitude_pruning<\/a><\/noindex>. Idee, mis \u00fctleb, et v\u00e4ikesed kaaludega konvolutsioonid annavad v\u00e4hese panuse l\u00f5ppotsusesse. <\/li>\n<li>V\u00e4ikseim L1-m\u00f5\u00f5de arvestades keskmist ja \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442h\u00e4lvet. T\u00e4iendame jaotuse iseloomu hindamisega.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1512.08571\">Konvolutsioonide maskeerimine ja nende v\u00e4ike m\u00f5ju l\u00f5ppt\u00e4psusele v\u00e4listamine.<\/a><\/noindex>. T\u00e4psem m\u00e4\u00e4ratlemine v\u00e4ikese t\u00e4htsusega konvolutsioonidest, kuid \u00fcsna ajamahukas ja ressursimahukas. <\/li>\n<li>Muud <\/li>\n<\/ol>\n<p><\/p>\n<p>Igal variandil on elu\u00f5igus ja oma rakenduse omadused. Siin vaatame v\u00e4ikseimale L1-m\u00f5\u00f5tmele p\u00f5hinevat varianti.<\/p>\n<p><\/p>\n<h3 id=\"ruchnoy-process-dlya-yolov3\">K\u00e4sitsi protsess YOLOv3 jaoks<\/h3>\n<p><\/p>\n<p>Algse arhitektuuris on j\u00e4\u00e4nud j\u00e4\u00e4kplokid. Kuigi need on s\u00fcgavate v\u00f5rkude jaoks \u00e4\u00e4rmiselt kasulikud, v\u00f5ivad need meid siiski takistada. Probleem on selles, et erinevate indeksitega kokkulangevusi ei saa nende kihtide sees kustutada:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d516ab886a28d62a34e6a934fdd62c12.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seega eristame kihte, kust saame vabalt kokkulangevusi eemaldada:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/f9b69d9900d641e1d5835db9cc749189.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd loome t\u00f6\u00f6ts\u00fckli:<\/p>\n<p><\/p>\n<ol>\n<li>Laadime v\u00e4lja aktiveeringud<\/li>\n<li>Kalkuleerime, kui palju k\u00e4rpida <\/li>\n<li>K\u00e4rpime<\/li>\n<li>Treeni 10 epohi LR=1e-4 <\/li>\n<li>Testime <\/li>\n<\/ol>\n<p><\/p>\n<p>Kokkusurumine on kasulik, et hinnata, kui palju me teatud sammul eemaldada saame. N\u00e4ited v\u00e4ljalaskmisest:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cd8202e6ce1aa0cc59fbdc4bd8562427.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4gime, et praktiliselt igal pool on 5% kokkusurumisest \u00fcsna madala L1-normiga ja saame need eemaldada. Igal sammul korrati sellist v\u00e4ljalaset ja hinnati, millistelt kihtidelt ja kui palju saab k\u00e4rpida. <\/p>\n<p><\/p>\n<p>Kogu protsess mahtus 4 sammu (siin ja igal pool numbrid RTX 2060 Super jaoks):<\/p>\n<p><\/p>\n<table>\n<thead>\n<tr>\n<th>Samm<\/th>\n<th>mAp75<\/th>\n<th>Parameetrite arv, miljonites<\/th>\n<th>V\u00f5rgu suurus, MB<\/th>\n<th>Algse suuruse %<\/th>\n<th>K\u00e4itamisaeg, ms<\/th>\n<th>K\u00e4rpimise tingimus<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0<\/td>\n<td>0.9656<\/td>\n<td>60<\/td>\n<td>241<\/td>\n<td>100<\/td>\n<td>180<\/td>\n<td>&#8212;<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>0.9622<\/td>\n<td>55<\/td>\n<td>218<\/td>\n<td>91<\/td>\n<td>175<\/td>\n<td>5% k\u00f5igist<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>0.9625<\/td>\n<td>50<\/td>\n<td>197<\/td>\n<td>83<\/td>\n<td>168<\/td>\n<td>5% k\u00f5igist<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>0.9633<\/td>\n<td>39<\/td>\n<td>155<\/td>\n<td>64<\/td>\n<td>155<\/td>\n<td>15% kihtide jaoks, kus on 400+ kokkusurumist<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>0.9555<\/td>\n<td>31<\/td>\n<td>124<\/td>\n<td>51<\/td>\n<td>146<\/td>\n<td>10% kihtide jaoks, kus on 100+ kokkusurumist<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/p>\n<p>Teise etapi juurde lisandus \u00fcks positiivne efekt \u2014 m\u00e4lu mahub batch-size 4, mis kiirendas t\u00e4iend\u00f5ppe protsessi.<br \/>\nNeljas etapp peatati, kuna isegi pikaajaline t\u00e4iend\u00f5pe ei t\u00f5stnud mAp75 varasematele tasemetele.<br \/>\nKokkuv\u00f5ttes \u00f5nnestus kiirendada inference'i <strong>15%<\/strong>, v\u00e4hendada suurust<strong> 35% <\/strong>ja mitte kaotada t\u00e4psuses. <\/p>\n<p><\/p>\n<h3 id=\"avtomatizaciya-dlya-bolee-prostyh-arhitektur\">Automatiseerimine lihtsamate arhitektuuride jaoks<\/h3>\n<p><\/p>\n<p>Lihtsamate v\u00f5rguarhitektuuride (ilma tingimuslike add, concatenate ja residual plokkideta) puhul on t\u00e4iesti v\u00f5imalik orienteeruda k\u00f5igi kokkusurumiste t\u00f6\u00f6tlemisel ja automatiseerida kokkusurumise eemaldamise protsess.<\/p>\n<p><\/p>\n<p>Sellise variandi olen ma rakendanud <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">siit<\/a><\/noindex>.<br \/>\nK\u00f5ik on lihtne: teilt on ainult vajalik kahanemise funktsioon, optimeerija ja batch-generaadoreid:<\/p>\n<p><\/p>\n<pre><code class=\"python\">import pruning\nfrom keras.optimizers import Adam\nfrom keras.utils import Sequence\n\ntrain_batch_generator = BatchGenerator...\nscore_batch_generator = BatchGenerator...\n\nopt = Adam(lr=1e-4)\npruner = pruning.Pruner(\"config.json\", \"categorical_crossentropy\", opt)\n\npruner.prune(train_batch, valid_batch)<\/code><\/pre>\n<p><\/p>\n<p>Vajadusel saab konfigureerimise parameetreid muuta:<\/p>\n<p><\/p>\n<pre><code class=\"json\">{\n    \"input_model_path\": \"model.h5\",\n    \"output_model_path\": \"model_pruned.h5\",\n    \"finetuning_epochs\": 10, # epohhide arv treenimise ajal k\u00e4rpimise etappide vahel\n    \"stop_loss\": 0.1, # kaotus peatamise protsessi jaoks\n    \"pruning_percent_step\": 0.05, # osa konvolutsioonidest, mis eemaldatakse igal k\u00e4rpimise sammul\n    \"pruning_standart_deviation_part\": 0.2 # piiri seotuse k\u00e4rpimise osa\n}<\/code><\/pre>\n<p><\/p>\n<p>Lisaks on rakendatud piirang vastavalt standardh\u00e4lbele. Eesm\u00e4rk on piirata eemaldatavate osa, j\u00e4ttes v\u00e4lja pakked, millel on juba 'piisavad' L1-m\u00f5\u00f5tmised:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/c2733d01a4d5b6e9a97a1e683d87ff45.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sellega lubame eemaldada ainult n\u00f5rgad kokkusurumised jaotustest, mis meenutavad paremat, ning mitte m\u00f5jutada eemaldamist jaotustest, mis meenutavad vasakut:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/a9c9bee6322d268026ffb6713fc0bc86.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jaotuse l\u00e4henedes normaalsele, saab pruning_standart_deviation_part koosta j\u00e4lgida:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/efee3eda6b8263de42e8f52541a3e949.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSoovitan 2 sigma piirangut. V\u00f5i v\u00f5ib selle erip\u00e4ra mitte silmas pidada, j\u00e4ttes v\u00e4\u00e4rtuse &lt; 1.0.<\/p>\n<p><\/p>\n<p>L\u00f5pptulemusena saadakse v\u00f5rgusuuruse, kaotuse ja k\u00e4itamisaja graafikid kogu katse jooksul, normeeritud 1.0-le. N\u00e4iteks siin oli v\u00f5rgu suurus peaaegu kahekordistunud kvaliteedi kaotamata (v\u00e4ike konvolutsiooniline v\u00f5rgu 100k kaaluga):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedai tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1048ac38b12c753e54c8d8a2dc1dc394.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00e4itamisaeg allub normaalsetele k\u00f5ikumistele ja ei ole praktiliselt muutunud. Sellel on seletus:<\/p>\n<p><\/p>\n<ol>\n<li>Kokkusurumiste arv muutub mugavast (32, 64, 128) ebamugavaks videokaartidele \u2014 27, 51 jne. Siin v\u00f5in eksida, kuid t\u00f5en\u00e4oliselt see m\u00f5jutab.<\/li>\n<li>Arhitektuur ei ole lai, kuid j\u00e4rjestikune. Laidude v\u00e4hendamine ei muuda s\u00fcgavust. Seega v\u00e4hendame koormat, kuid ei muuda kiirus.<\/li>\n<\/ol>\n<p><\/p>\n<p>Seet\u00f5ttu v\u00e4ljendub paranemine CUDA koormuse v\u00e4henemises 20-30% k\u00e4itamisel, kuid mitte k\u00e4itamise aja v\u00e4henemises.<\/p>\n<p><\/p>\n<h3 id=\"itogi\">Kokkuv\u00f5te<\/h3>\n<p><\/p>\n<p>Reflekteerime. Oleme vaadanud kahte pruning'i varianti \u2014 YOLOv3 jaoks (kui tuleb k\u00e4tega t\u00f6\u00f6tada) ja lihtsama arhitektuuriga v\u00f5rke. On ilmne, et m\u00f5lemas olukorras saab saavutada v\u00f5rgu suuruse v\u00e4hendamise ja kiirendamise ilma t\u00e4psuse kaotamata. Tulemused:<\/p>\n<p><\/p>\n<ul>\n<li>Suuruse v\u00e4henemine<\/li>\n<li>K\u00e4itamise kiirus<\/li>\n<li>CUDA koormuse v\u00e4henemine<\/li>\n<li>J\u00e4rgnevalt ka keskkonnaalane m\u00f5ju (me optimeerime tulevase arvutusressursside kasutamise). Kuskil on \u00fcks <noindex><a rel=\"nofollow\" href=\"https:\/\/meduza.io\/feature\/2019\/12\/12\/kto-takaya-greta-tunberg-i-pochemu-ona-stala-chelovekom-goda-zhurnal-time\">Greta Thunberg<\/a><\/noindex>)<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"appendix\">Lisa<\/h3>\n<p><\/p>\n<ul>\n<li>P\u00e4rast k\u00e4rpimist saab veel t\u00f6\u00f6tada ka kvantimisega (n\u00e4iteks TensorRT kaudu)<\/li>\n<li>Tensorflow pakub v\u00f5imalusi <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/model_optimization\/guide\/pruning\/pruning_with_keras\">low_magnitude_pruning<\/a><\/noindex>. See t\u00f6\u00f6tab.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">Repo<\/a><\/noindex> soovin seda edasi arendada ja olen avatud abile<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/482050\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0411\u0435\u0440\u0435\u0448\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 YOLOv3 \u0438 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0435\u0448\u044c. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c(mAp75) \u0431\u043e\u043b\u044c\u0448\u0435 0.95. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0438\u0437\u043a\u0430\u044f. \u0427\u0435\u0440\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Model Pruning \u2014 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Inference \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u043e\u0442\u043a\u0443\u0434\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54494","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u0436\u0435\u0434\u0430\u0439\u0441\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u2014 pruning | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-26T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Jedi tehnika konvolutsiooniliste v\u00f5rgu v\u00e4hendamiseks \u2014 pruning | ProHoster","description":"Sinu ees on taas \u00fclesanne.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u0436\u0435\u0434\u0430\u0439\u0441\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u2014 pruning | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430.","og:url":"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-26T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54494","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 11:34:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:29:04","updated":"2026-01-24 11:34:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=54494"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54494\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=54494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=54494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=54494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}