{"id":30028,"date":"2019-10-31T21:33:18","date_gmt":"2019-10-31T18:33:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki\/"},"modified":"2019-10-31T21:33:18","modified_gmt":"2019-10-31T18:33:18","slug":"rabotaem-s-nejrosetyami-chek-list-dlya-otladki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki","title":{"rendered":"We werken met neurale netwerken: checklist voor debugging","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"We werken met neurale netwerken: checklist voor debugging\" src=\"\/wp-content\/uploads\/2019\/03\/8ce45093bfe44092cb25d947c32bb0b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nDe code van softwareproducten voor machine learning is vaak complex en behoorlijk verwarrend. Het opsporen en verhelpen van bugs hierin is een tijdrovende klus. Zelfs de eenvoudigste <noindex><a rel=\"nofollow\" href=\"https:\/\/cs.stanford.edu\/people\/eroberts\/courses\/soco\/projects\/neural-networks\/Architecture\/feedforward.html\">neuraal netwerken met directe verbindingen<\/a><\/noindex> vereisen een serieuze aanpak voor netwerkarchitectuur, gewichtsinitialisatie en netwerkoptimalisatie. Een kleine fout kan leiden tot vervelende problemen.<\/p>\n<p>Dit artikel is gewijd aan het debuggen van uw neurale netwerken.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Skillbox raadt aan:<\/b> Praktische cursus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/python\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PTNDEV&amp;utm_content=articles&amp;utm_term=neuronet\">Python-ontwikkelaar vanaf nul<\/a><\/noindex>.<\/p>\n<p><b>Ter herinnering:<\/b> <i>voor alle lezers van \u00abHabr\u00bb \u2014 een korting van 10.000 roebel bij inschrijving voor elke cursus van Skillbox met de promocode \u00abHabr\u00bb.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h3>Het algoritme bestaat uit vijf fasen:<\/h3>\n<p><\/p>\n<ul>\n<li>eenvoudige start;<\/li>\n<li>validatie van verliezen;<\/li>\n<li>controleren van tussenresultaten en verbindingen;<\/li>\n<li>diagnose van parameters;<\/li>\n<li>bewaking van prestaties.<\/li>\n<\/ul>\n<p>\nAls u iets interessanter vindt dan het andere, kunt u direct naar deze secties gaan. <\/p>\n<h3>Eenvoudige start<\/h3>\n<p>\nHet debuggen van een neuraal netwerk met een complexe architectuur, regularisatie en een leer scheduler is moeilijker dan van een standaard netwerk. We zijn hier een beetje creatief, omdat deze stap indirect gerelateerd is aan debugging, maar het blijft een belangrijke aanbeveling.<\/p>\n<p>De eenvoudige start houdt in dat er een vereenvoudigd model wordt gemaakt en dit op \u00e9\u00e9n set (data) wordt getraind.<\/p>\n<p><b>Laten we eerst een vereenvoudigd model maken<\/b><\/p>\n<p>Voor een snelle start cre\u00ebren we een klein netwerk met \u00e9\u00e9n verborgen laag en controleren we of alles correct werkt. Vervolgens compliceren we het model geleidelijk en controleren we elk nieuw aspect van de structuur (extra laag, parameter, enz.), en gaan we verder.<\/p>\n<p><b>Train het model op \u00e9\u00e9n enkele set (data)<\/b><\/p>\n<p>Als snelle controle van de werking van uw project kunt u een of twee gegevenspunten gebruiken om te bevestigen dat de systeemcorrect werkt. Het neuraal netwerk moet 100% nauwkeurigheid van training en validatie tonen. Als dit niet het geval is, dan is het model ofwel te klein, of er is al een bug.<\/p>\n<p>Zelfs als alles goed is, bereidt u het model voor om \u00e9\u00e9n of meerdere epochs te doorlopen voordat u verder gaat.<\/p>\n<h3>Verliesbeoordeling<\/h3>\n<p>\nVerliesbeoordeling is de belangrijkste manier om de prestaties van het model te verfijnen. U moet ervoor zorgen dat het verlies past bij de taak, en dat verliesfuncties worden beoordeeld op de juiste schaal. Als u meer dan \u00e9\u00e9n type verlies gebruikt, zorg er dan voor dat ze allemaal van dezelfde orde zijn en correct zijn geschaald.<\/p>\n<p>Het is belangrijk om alert te zijn op de initi\u00eble verliezen. Controleer hoe dicht het werkelijke resultaat bij de verwachting ligt als het model met een willekeurige aanname begint. In <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#baby\">het werk van Andrei Karpathy wordt het volgende voorgesteld<\/a><\/noindex>: \"Zorg ervoor dat je het verwachte resultaat krijgt bij het starten met een klein aantal parameters. Het is beter om onmiddellijk het gegevensverlies te controleren (met de regularisatiegraad ingesteld op nul). Bijvoorbeeld, voor CIFAR-10 met de Softmax-classificator verwachten we dat de initi\u00eble verliezen 2.302 zullen zijn, omdat de verwachte oppervlakkige waarschijnlijkheid 0,1 is voor elke klasse (aangezien er 10 klassen zijn), en het Softmax-verlies is de negatieve logaritmische waarschijnlijkheid van de juiste klasse, oftewel \u2013ln(0.1) = 2.302.\"<\/p>\n<p>Voor een binair voorbeeld wordt een soortgelijke berekening gedaan voor elke van de klassen. Hier zijn bijvoorbeeld de gegevens: 20% 0's en 80% 1's. Het verwachte initi\u00eble verlies zal tot \u20130,2ln (0,5) \u20130,8ln (0,5) = 0,693147 bedragen. Als het resultaat groter is dan 1, kan dit erop wijzen dat de gewichten van het neuraal netwerk niet goed zijn gebalanceerd of dat de gegevens niet genormaliseerd zijn.<\/p>\n<h3>We controleren de tussentijdse resultaten en verbindingen <\/h3>\n<p>\nVoor het debuggen van het neuraal netwerk is het noodzakelijk om de dynamiek van de processen binnen het netwerk en de rol van de afzonderlijke tussenlagen te begrijpen, omdat deze met elkaar verbonden zijn. Hier zijn enkele typische fouten die je kunt tegenkomen:<\/p>\n<ul>\n<li>onjuiste uitdrukkingen voor de updates van de gradient;<\/li>\n<li>gewichtsupdates worden niet toegepast;<\/li>\n<li>verdampende of exploderende gradients (exploding gradients).<\/li>\n<\/ul>\n<p>\nAls de gradientwaarden nul zijn, betekent dit dat de leersnelheid in de optimizer te laag is, of dat je bent gestuit op een onjuiste uitdrukking voor de gradientupdate.<\/p>\n<p>Bovendien is het belangrijk om de waarden van activatiefuncties, gewichten en updates van elke laag in de gaten te houden. Bijvoorbeeld, de grootte van de parameterupdates (gewichten en verschuivingen) <noindex><a rel=\"nofollow\" href=\"https:\/\/cs231n.github.io\/neural-networks-3\/#summary\">zou 1-e3 moeten zijn<\/a><\/noindex>.<\/p>\n<p>Er is een fenomeen dat de naam \"Dying ReLU\" heeft gekregen of <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Vanishing_gradient_problem\">\"het probleem van de verdampende gradient\"<\/a><\/noindex>, waarbij ReLU-neuronen nul zullen uitgeven na het leren van een grote negatieve waarde (bias) voor hun gewichten. Deze neuronen worden nooit meer geactiveerd op enige plaats in de gegevens.<\/p>\n<p>U kunt gradientchecks gebruiken om deze fouten te identificeren door de gradient te benaderen met een numerieke aanpak. Als deze dicht bij de berekende gradienten ligt, is de backpropagation correct ge\u00efmplementeerd. Voor het cre\u00ebren van een gradientcheck, bekijk deze geweldige bronnen van CS231. <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#gradcheck\">hier<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/optimization-1\/#gradcompute\">hier<\/a><\/noindex>, evenals <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=P6EtCVrvYPU\">de les<\/a><\/noindex> van Andrew Ng over dit onderwerp.<\/p>\n<p><noindex>Faizan Sheikh<\/noindex> noemt drie hoofdmethoden voor het visualiseren van neurale netwerken:<\/p>\n<ul>\n<li>Voorlopige methoden \u2014 eenvoudige technieken die ons de algemene structuur van het getrainde model tonen. Deze omvatten de uitvoer van vormen of filters van individuele lagen van het neurale netwerk en de parameters in elke laag.<\/li>\n<li> Activatie-gebaseerde methoden. Hiermee ontcijfer we de activaties van individuele neuronen of groepen neuronen om hun functies te begrijpen.<\/li>\n<li> Gradi\u00ebnt-gebaseerde methoden. Deze technieken manipuleren vaak de gradienten die worden gevormd uit de voorwaartse en achterwaartse doorgangen tijdens het trainen van het model (inclusief belangrijkheidskaarten en activatiemappen van de klasse).<\/li>\n<\/ul>\n<p>\nEr zijn verschillende nuttige hulpmiddelen voor het visualiseren van activaties en verbindingen van individuele lagen, zoals <noindex><a rel=\"nofollow\" href=\"https:\/\/conx.readthedocs.io\/en\/latest\/Getting%20Started%20with%20conx.html#What-is-ConX?\">ConX<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/guide\/tensorboard_histograms\">Tensorboard<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"We werken met neurale netwerken: checklist voor debugging\" src=\"\/wp-content\/uploads\/2019\/03\/56e7e88983d6772ef482bc8396dd52a2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Diagnose van parameters<\/h3>\n<p>\nNeurale netwerken hebben een groot aantal parameters die met elkaar interageren, wat optimalisatie ingewikkeld maakt. Dit deel is dan ook onderwerp van actief onderzoek, dus de onderstaande voorstellen moeten worden beschouwd als tips, beginpunten om vanaf te werken.<\/p>\n<p><b>Batchgrootte<\/b> (batch size) \u2014 het is noodzakelijk dat de batchgrootte groot genoeg is om nauwkeurige schattingen van de gradient van de fout te krijgen, maar klein genoeg zodat stochastic gradient descent (SGD) uw netwerk kan ordenen. Kleine batchgroottes leiden tot snelle convergentie door ruis in het leerproces, maar later tot moeilijkheden bij de optimalisatie. Dit wordt verder beschreven. <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1609.04836\">hier<\/a><\/noindex>.<\/p>\n<p><b>Leersnelheid<\/b> \u2014 te laag zal leiden tot trage convergentie of het risico om vast te komen zitten in lokale minima. Aan de andere kant zal een hoge leersnelheid leiden tot divergentie van de optimalisatie omdat u het risico loopt om over een diepe, maar smalle sectie van de verliesfunctie heen te springen. Probeer het gebruik van leersnelheidsplanning om deze tijdens het trainen van het neurale netwerk te verlagen. In de cursus CS231n. <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/\">er is een grote sectie gewijd aan dit probleem<\/a><\/noindex>.<\/p>\n<p><b>Gradient clipping<\/b>\u200a- het afkappen van de gradi\u00ebnten van parameters tijdens de terugpropagatie naar een maximumwaarde of een limietnorm. Dit is nuttig om problemen met explosieve gradi\u00ebnten op te lossen die je kunt tegenkomen in punt drie.<\/p>\n<p><b>Batch normalisatie<\/b> wordt gebruikt om de inputdata van elke laag te normaliseren, wat helpt bij het oplossen van het probleem van interne covariantieverschuiving. Als je Dropout en Batch Normalization samen gebruikt, <noindex><a rel=\"nofollow\" href=\"https:\/\/towardsdatascience.com\/pitfalls-of-batch-norm-in-tensorflow-and-sanity-checks-for-training-networks-e86c207548c8\">raadpleeg dit artikel<\/a><\/noindex>.<\/p>\n<p><b>Stochastische gradi\u00ebntafdalingen (SGD)<\/b> er zijn verschillende varianten van SGD die momentum, adaptieve leersnelheden en de Nesterov-methode gebruiken. Geen van deze heeft echter een duidelijk voordeel wat betreft leereffici\u00ebntie of generalisatie (<noindex><a rel=\"nofollow\" href=\"http:\/\/ruder.io\/optimizing-gradient-descent\/\">meer details hier<\/a><\/noindex>).<\/p>\n<p><b>Regularisatie<\/b> is cruciaal voor het bouwen van een generaliseerbaar model, omdat het een straf toevoegt voor de complexiteit van het model of extreme waarden van parameters. Dit is een manier om de variantie van het model te verminderen zonder de bias aanzienlijk te verhogen. Meer <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#ratio\">gedetailleerde informatie is hier<\/a><\/noindex>.<\/p>\n<p>Om alles zelf te evalueren, moet je regularisatie uitschakelen en de gradient van de verliesfunctie zelf controleren.<\/p>\n<p><b>Dropout <\/b>is nog een methode om je netwerk te regulariseren om overfitting te voorkomen. Tijdens het trainen wordt dropout alleen uitgevoerd door de activiteit van een neuron met een bepaalde waarschijnlijkheid p (hyperparameter) in stand te houden of, anders, deze op nul te zetten. Hierdoor moet het netwerk een andere subset van parameters gebruiken voor elke trainingsbatch, wat de wijzigingen in bepaalde parameters die dominant worden, vermindert.<\/p>\n<p>Belangrijk: als je zowel dropout als batchnormalisatie gebruikt, wees dan voorzichtig met de volgorde van deze bewerkingen of zelfs met hun gelijktijdig gebruik. Dit wordt nog steeds actief besproken en aangevuld. Hier zijn twee belangrijke discussies over dit onderwerp <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/39691902\/ordering-of-batch-normalization-and-dropout\">op Stackoverflow<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1801.05134\">Arxiv<\/a><\/noindex>.<\/p>\n<h3>Werkcontrole<\/h3>\n<p>\nDit gaat over het documenteren van werkprocessen en experimenten. Als je niets documenteert, kun je vergeten welke leersnelheid of klassegewichten er worden gebruikt. Dankzij controle kun je eerdere experimenten probleemloos bekijken en reproduceren. Dit helpt om het aantal dubbele experimenten te verminderen.<\/p>\n<p>Echter, handmatige documentatie kan een uitdaging worden bij een grote hoeveelheid werk. Hier komen tools zoals Comet.ml van pas, die helpen om automatisch datasets, codewijzigingen, experimenthistorie en productiemodellen te loggen, inclusief belangrijke informatie over jouw model (hyperparameters, prestatie-indicatoren van het model en omgevingsinformatie).<\/p>\n<p>Een neuraal netwerk kan behoorlijk gevoelig zijn voor kleine veranderingen, wat kan leiden tot een vermindering van de modelprestaties. Het volgen en documenteren van de prestaties is de eerste stap om een gestandaardiseerde omgeving en modelvorming te waarborgen.<\/p>\n<p><img decoding=\"async\" alt=\"We werken met neurale netwerken: checklist voor debugging\" src=\"\/wp-content\/uploads\/2019\/03\/37b3e4ef97ea39a3d28ffca5c1dbf1e5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nIk hoop dat deze post een vertrekpunt kan zijn voor het verbeteren van jouw neuraal netwerk.<\/p>\n<blockquote><p><b>Skillbox raadt aan:<\/b><\/p>\n<ul>\n<li>Praktische tweejarenopleiding <noindex><a rel=\"nofollow\" href=\"https:\/\/iamwebdev.skillbox.ru\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=WEBDEVPRO&amp;utm_content=articles&amp;utm_term=neuronet\">\u2018Ik ben een PRO webdeveloper\u2019<\/a><\/noindex>.<\/li>\n<li>Online cursus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/c-sharp\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=CSHDEV&amp;utm_content=articles&amp;utm_term=neuronet\">\u00abC#-ontwikkelaar vanaf 0\u00bb<\/a><\/noindex>.<\/li>\n<li>Praktische jaaropleiding <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/php\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PHPDEV&amp;utm_content=articles&amp;utm_term=neuronet\">\u2018PHP-developer van 0 tot PRO\u2019<\/a><\/noindex>.\n<\/li>\n<\/ul>\n<\/blockquote>\n<p>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/444684\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c. \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f \u0431\u0430\u0433\u043e\u0432 \u0432 \u043d\u0435\u043c \u2014 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0414\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u0441 \u043f\u0440\u044f\u043c\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0441\u043e\u0432, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0438. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u0430\u0448\u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439. Skillbox \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442: [&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":[],"tags":[],"class_list":["post-30028","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e.\" \/>\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\/nl\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u043c\u0438: \u0447\u0435\u043a-\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki\" \/>\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-10-31T18:33:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:33:18+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\udd47 We werken met neurale netwerken: checklist voor debuggen | ProHoster","description":"De code van softwareproducten voor machine learning.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u043c\u0438: \u0447\u0435\u043a-\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 | ProHoster","og:description":"\u041a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e.","og:url":"https:\/\/prohoster.info\/nl\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki","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-10-31T18:33:18+00:00","article:modified_time":"2019-10-31T18:33:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30028","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":"Article","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-20 23:28:27","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:43:15","updated":"2026-01-20 23:28:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=30028"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30028\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=30028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=30028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=30028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}