{"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\/fr\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki","title":{"rendered":"Nous travaillons avec des r\u00e9seaux neuronaux : liste de contr\u00f4le pour le d\u00e9bogage","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Nous travaillons avec des r\u00e9seaux neuronaux : liste de contr\u00f4le pour le d\u00e9bogage\" src=\"\/wp-content\/uploads\/2019\/03\/8ce45093bfe44092cb25d947c32bb0b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nLe code des produits logiciels pour l'apprentissage automatique est souvent complexe et difficile \u00e0 comprendre. La d\u00e9tection et la r\u00e9solution des bugs repr\u00e9sentent une t\u00e2che gourmande en ressources. M\u00eame les plus simples <noindex><a rel=\"nofollow\" href=\"https:\/\/cs.stanford.edu\/people\/eroberts\/courses\/soco\/projects\/neural-networks\/Architecture\/feedforward.html\">r\u00e9seaux de neurones \u00e0 connexion directe<\/a><\/noindex> exigent une approche s\u00e9rieuse en mati\u00e8re d'architecture r\u00e9seau, d'initialisation des poids et d'optimisation du r\u00e9seau. La moindre erreur peut entra\u00eener des probl\u00e8mes d\u00e9sagr\u00e9ables.<\/p>\n<p>Cet article est d\u00e9di\u00e9 \u00e0 l'algorithme de d\u00e9bogage de vos r\u00e9seaux neuronaux.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Skillbox recommande :<\/b> Cours pratique <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\">D\u00e9veloppeur Python depuis le d\u00e9but<\/a><\/noindex>.<\/p>\n<p><b>Rappelons-le :<\/b> <i>pour tous les lecteurs de \u00ab Habr \u00bb \u2014 une r\u00e9duction de 10 000 roubles lors de l'inscription \u00e0 tout cours Skillbox avec le code promo \u00ab Habr \u00bb.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h3>L'algorithme se compose de cinq \u00e9tapes :<\/h3>\n<p><\/p>\n<ul>\n<li>d\u00e9marrage simple ;<\/li>\n<li>confirmation des pertes ;<\/li>\n<li>v\u00e9rification des r\u00e9sultats interm\u00e9diaires et des connexions ;<\/li>\n<li>diagnostic des param\u00e8tres ;<\/li>\n<li>contr\u00f4le du fonctionnement.<\/li>\n<\/ul>\n<p>\nSi quelque chose vous semble plus int\u00e9ressant qu'autre chose, vous pouvez passer directement \u00e0 ces sections. <\/p>\n<h3>D\u00e9marrage simple<\/h3>\n<p>\nIl est plus difficile de d\u00e9boguer un r\u00e9seau de neurones avec une architecture complexe, une r\u00e9gularisation et un planificateur de taux d'apprentissage que de d\u00e9boguer un r\u00e9seau classique. Nous agissons ici un peu de mani\u00e8re d\u00e9tourn\u00e9e, car ce point de d\u00e9bogage a une relation indirecte, mais c'est n\u00e9anmoins une recommandation importante.<\/p>\n<p>Le d\u00e9marrage simple consiste \u00e0 cr\u00e9er un mod\u00e8le simplifi\u00e9 et \u00e0 l'entra\u00eener sur un ensemble (point) de donn\u00e9es.<\/p>\n<p><b>Tout d'abord, cr\u00e9ons un mod\u00e8le simplifi\u00e9<\/b><\/p>\n<p>Pour un d\u00e9marrage rapide, cr\u00e9ons un petit r\u00e9seau avec une seule couche cach\u00e9e et v\u00e9rifions que tout fonctionne correctement. Ensuite, complexifions progressivement le mod\u00e8le en v\u00e9rifiant chaque nouvel aspect de sa structure (couche suppl\u00e9mentaire, param\u00e8tre, etc.) et avan\u00e7ons.<\/p>\n<p><b>Entra\u00eenons le mod\u00e8le sur un seul ensemble (point) de donn\u00e9es<\/b><\/p>\n<p>Comme validation rapide du bon fonctionnement de votre projet, vous pouvez utiliser un ou deux points de donn\u00e9es pour vous assurer que le syst\u00e8me fonctionne correctement. Le r\u00e9seau de neurones doit afficher une pr\u00e9cision de 100 % en formation et en validation. Si ce n'est pas le cas, soit le mod\u00e8le est trop petit, soit il y a un bug.<\/p>\n<p>M\u00eame si tout va bien, pr\u00e9parez le mod\u00e8le \u00e0 passer une ou plusieurs \u00e9poques avant d'aller plus loin.<\/p>\n<h3>\u00c9valuation des pertes<\/h3>\n<p>\nL'\u00e9valuation des pertes est le principal moyen d'affiner les performances du mod\u00e8le. Vous devez vous assurer que la perte correspond \u00e0 la t\u00e2che et que les fonctions de perte sont \u00e9valu\u00e9es selon l'\u00e9chelle correcte. Si vous utilisez plus d'un type de perte, assurez-vous qu'ils sont de m\u00eame ordre et correctement mis \u00e0 l'\u00e9chelle.<\/p>\n<p>Il est important de pr\u00eater attention aux pertes initiales. V\u00e9rifiez \u00e0 quel point le r\u00e9sultat r\u00e9el est proche de l'attendu, si le mod\u00e8le a commenc\u00e9 avec une supposition al\u00e9atoire. Dans <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#baby\">le travail d'Andrei Karpathy, il est propos\u00e9 ce qui suit<\/a><\/noindex>: \u00abAssurez-vous que vous obtenez le r\u00e9sultat attendu lorsqu'on commence \u00e0 travailler avec un nombre r\u00e9duit de param\u00e8tres. Il est pr\u00e9f\u00e9rable de v\u00e9rifier imm\u00e9diatement la perte de donn\u00e9es (en r\u00e9glant le degr\u00e9 de r\u00e9gularisation \u00e0 z\u00e9ro). Par exemple, pour CIFAR-10 avec le classificateur Softmax, nous nous attendons \u00e0 ce que les pertes initiales soient de 2,302, car la probabilit\u00e9 diffus\u00e9e attendue est de 0,1 pour chaque classe (puisqu'il y a 10 classes), et la perte Softmax est le logarithme n\u00e9gatif de la probabilit\u00e9 de la classe correcte, soit \u2013ln (0,1) = 2,302.\u00bb<\/p>\n<p>Pour un exemple binaire, un calcul similaire est simplement effectu\u00e9 pour chacune des classes. Voici, par exemple, les donn\u00e9es : 20 % de 0 et 80 % de 1. La perte initiale attendue sera de jusqu'\u00e0 \u20130,2ln(0,5) \u20130,8ln(0,5) = 0,693147. Si le r\u00e9sultat est sup\u00e9rieur \u00e0 1, cela peut indiquer que les poids du r\u00e9seau de neurones ne sont pas correctement \u00e9quilibr\u00e9s ou que les donn\u00e9es ne sont pas normalis\u00e9es.<\/p>\n<h3>V\u00e9rifions les r\u00e9sultats interm\u00e9diaires et les connexions <\/h3>\n<p>\nPour d\u00e9boguer un r\u00e9seau de neurones, il est n\u00e9cessaire de comprendre la dynamique des processus \u00e0 l'int\u00e9rieur du r\u00e9seau et le r\u00f4le des couches interm\u00e9diaires, car elles sont interconnect\u00e9es. Voici des erreurs typiques auxquelles vous pourriez \u00eatre confront\u00e9 :<\/p>\n<ul>\n<li>expressions incorrectes pour les mises \u00e0 jour de gradient ;<\/li>\n<li>les mises \u00e0 jour de poids ne sont pas appliqu\u00e9es ;<\/li>\n<li>des gradients \u00e9vanouissants ou explosifs (exploding gradients).<\/li>\n<\/ul>\n<p>\nSi les valeurs du gradient sont nulles, cela signifie que le taux d'apprentissage de l'optimiseur est trop faible, ou que vous \u00eates confront\u00e9 \u00e0 une expression incorrecte pour la mise \u00e0 jour du gradient.<\/p>\n<p>De plus, il est n\u00e9cessaire de surveiller les valeurs des fonctions d'activation, des poids et des mises \u00e0 jour de chacune des couches. Par exemple, l\u2019ampleur des mises \u00e0 jour des param\u00e8tres (poids et biais) <noindex><a rel=\"nofollow\" href=\"https:\/\/cs231n.github.io\/neural-networks-3\/#summary\">doit \u00eatre de 1-e3<\/a><\/noindex>.<\/p>\n<p>Il existe un ph\u00e9nom\u00e8ne connu sous le nom de \u201cDying ReLU\u201d ou <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Vanishing_gradient_problem\">\u00abprobl\u00e8me du gradient \u00e9vanouissant\u00bb<\/a><\/noindex>, o\u00f9 les neurones ReLU produiront z\u00e9ro apr\u00e8s avoir appris une grande valeur n\u00e9gative (biais) pour leurs poids. Ces neurones ne s'activeront plus jamais dans aucune des donn\u00e9es.<\/p>\n<p>Vous pouvez utiliser la v\u00e9rification du gradient pour identifier ces erreurs en approximant le gradient \u00e0 l'aide d'une approche num\u00e9rique. S'il est proche des gradients calcul\u00e9s, cela signifie que la r\u00e9tropropagation a \u00e9t\u00e9 correctement mise en \u0153uvre. Pour cr\u00e9er une v\u00e9rification du gradient, consultez ces ressources remarquables de CS231. <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#gradcheck\">ici<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/optimization-1\/#gradcompute\">ici<\/a><\/noindex>, ainsi que <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=P6EtCVrvYPU\">le cours<\/a><\/noindex> d'Andrew Ng sur ce sujet.<\/p>\n<p><noindex>Faizan Sheikh<\/noindex> \u00e9nonce trois m\u00e9thodes principales pour visualiser les r\u00e9seaux de neurones :<\/p>\n<ul>\n<li>Pr\u00e9liminaires \u2014 des m\u00e9thodes simples qui nous montrent la structure g\u00e9n\u00e9rale du mod\u00e8le entra\u00een\u00e9. Elles incluent la sortie des formes ou des filtres des couches individuelles du r\u00e9seau de neurones et des param\u00e8tres de chaque couche.<\/li>\n<li> Bas\u00e9es sur l'activation. Ici, nous d\u00e9chiffrons les activations des neurones individuels ou des groupes de neurones pour comprendre leurs fonctions.<\/li>\n<li> Bas\u00e9es sur les gradients. Ces m\u00e9thodes ont tendance \u00e0 manipuler les gradients form\u00e9s lors de la propagation avant et arri\u00e8re lors de l'entra\u00eenement du mod\u00e8le (y compris les cartes d'importance et les cartes d'activation de classe).<\/li>\n<\/ul>\n<p>\nIl existe plusieurs outils utiles pour visualiser les activations et les connexions des couches individuelles, tels que <noindex><a rel=\"nofollow\" href=\"https:\/\/conx.readthedocs.io\/en\/latest\/Getting%20Started%20with%20conx.html#What-is-ConX?\">ConX<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/guide\/tensorboard_histograms\">Tensorboard<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Nous travaillons avec des r\u00e9seaux neuronaux : liste de contr\u00f4le pour le d\u00e9bogage\" src=\"\/wp-content\/uploads\/2019\/03\/56e7e88983d6772ef482bc8396dd52a2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Diagnostic des param\u00e8tres<\/h3>\n<p>\nLes r\u00e9seaux de neurones ont de nombreux param\u00e8tres qui interagissent entre eux, ce qui complique l'optimisation. En r\u00e9alit\u00e9, cette section fait l'objet de recherches actives de sp\u00e9cialistes, donc les suggestions ci-dessous doivent \u00eatre consid\u00e9r\u00e9es comme des conseils, des points de d\u00e9part \u00e0 partir desquels s'appuyer.<\/p>\n<p><b>Taille du lot<\/b> (batch size) \u2014 il est n\u00e9cessaire que la taille du lot soit suffisamment grande pour obtenir des \u00e9valuations pr\u00e9cises du gradient d'erreur, mais suffisamment petite pour que la descente de gradient stochastique (SGD) puisse ordonner votre r\u00e9seau. De petites tailles de lots conduiront \u00e0 une convergence rapide gr\u00e2ce au bruit dans le processus d'apprentissage, ce qui rendra l'optimisation difficile par la suite. Cela est d\u00e9crit plus en d\u00e9tail <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1609.04836\">ici<\/a><\/noindex>.<\/p>\n<p><b>Taux d'apprentissage<\/b> \u2014 trop bas m\u00e8nera \u00e0 une convergence lente ou au risque de rester coinc\u00e9 dans des minima locaux. En m\u00eame temps, un taux d'apprentissage \u00e9lev\u00e9 provoquera une divergence de l'optimisation car vous risquez de \"sauter\" \u00e0 travers une partie profonde mais \u00e9troite de la fonction de perte. Essayez d'utiliser la planification du taux pour le diminuer lors de l'apprentissage du r\u00e9seau de neurones. Dans le cours CS231n. <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/\">il existe une grande section consacr\u00e9e \u00e0 ce probl\u00e8me<\/a><\/noindex>.<\/p>\n<p><b>Coupe de gradient<\/b>\u2014 coupe des gradients des param\u00e8tres lors de la r\u00e9tropropagation selon la valeur maximale ou la norme limite. Utile pour r\u00e9soudre les probl\u00e8mes d'explosions de gradients auxquels vous pourriez \u00eatre confront\u00e9 au troisi\u00e8me point.<\/p>\n<p><b>Normalisation par lot<\/b> \u2014 utilis\u00e9e pour normaliser les donn\u00e9es d'entr\u00e9e de chaque couche, ce qui permet de r\u00e9soudre le probl\u00e8me du d\u00e9calage de covariation interne. Si vous utilisez Dropout et Batch Normalization ensemble, <noindex><a rel=\"nofollow\" href=\"https:\/\/towardsdatascience.com\/pitfalls-of-batch-norm-in-tensorflow-and-sanity-checks-for-training-networks-e86c207548c8\">veuillez consulter cet article<\/a><\/noindex>.<\/p>\n<p><b>Descente de gradient stochastique (SGD)<\/b> \u2014 il existe plusieurs variantes de SGD qui utilisent l'\u00e9lan, des taux d'apprentissage adaptatifs et la m\u00e9thode de Nesterov. Aucune d'entre elles n'a un avantage \u00e9vident en termes d'efficacit\u00e9 d'apprentissage ou de g\u00e9n\u00e9ralisation (<noindex><a rel=\"nofollow\" href=\"http:\/\/ruder.io\/optimizing-gradient-descent\/\">plus de d\u00e9tails ici<\/a><\/noindex>).<\/p>\n<p><b>R\u00e9gularisation<\/b> \u2014 est cruciale pour construire un mod\u00e8le g\u00e9n\u00e9ralisable, car elle ajoute une p\u00e9nalit\u00e9 pour la complexit\u00e9 du mod\u00e8le ou les valeurs extr\u00eames des param\u00e8tres. C'est un moyen de r\u00e9duire la variance du mod\u00e8le sans augmenter de mani\u00e8re significative son biais. Plus <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#ratio\">d'informations d\u00e9taill\u00e9es ici<\/a><\/noindex>.<\/p>\n<p>Pour \u00e9valuer cela par vous-m\u00eame, vous devez d\u00e9sactiver la r\u00e9gularisation et v\u00e9rifier le gradient de perte des donn\u00e9es par vous-m\u00eame.<\/p>\n<p><b>Dropout <\/b>\u2014 est une autre m\u00e9thode pour r\u00e9gulariser votre r\u00e9seau afin de pr\u00e9venir le surapprentissage. Pendant l'apprentissage, le dropout consiste uniquement \u00e0 maintenir l'activit\u00e9 d'un neurone avec une certaine probabilit\u00e9 p (hyperparam\u00e8tre) ou \u00e0 le mettre \u00e0 z\u00e9ro sinon. En cons\u00e9quence, le r\u00e9seau doit utiliser un autre sous-ensemble de param\u00e8tres pour chaque lot d'apprentissage, ce qui r\u00e9duit les variations des param\u00e8tres sp\u00e9cifiques qui deviennent dominants.<\/p>\n<p>Important : si vous utilisez \u00e0 la fois le dropout et la normalisation par lot, faites attention \u00e0 l'ordre de ces op\u00e9rations ou m\u00eame \u00e0 leur utilisation ensemble. Tout cela est encore activement discut\u00e9 et compl\u00e9t\u00e9. Voici deux discussions importantes sur ce sujet <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/39691902\/ordering-of-batch-normalization-and-dropout\">sur Stackoverflow<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1801.05134\">Arxiv<\/a><\/noindex>.<\/p>\n<h3>Contr\u00f4le du travail<\/h3>\n<p>\nIl s'agit de documenter les workflows et les exp\u00e9riences. Si rien n'est document\u00e9, il est possible d'oublier, par exemple, quelle vitesse d'apprentissage ou quel poids des classes est utilis\u00e9. Gr\u00e2ce au suivi, il est facile de consulter et de reproduire les exp\u00e9riences pass\u00e9es. Cela permet de r\u00e9duire le nombre d'exp\u00e9riences redondantes.<\/p>\n<p>Cependant, la documentation manuelle peut devenir une t\u00e2che difficile en cas de volume de travail important. C'est ici que des outils comme Comet.ml entrent en jeu, aidant \u00e0 loguer automatiquement les ensembles de donn\u00e9es, les modifications de code, l'historique des exp\u00e9riences et les mod\u00e8les de production, y compris les informations cl\u00e9s sur votre mod\u00e8le (hyperparam\u00e8tres, mesures de performance du mod\u00e8le et informations sur l'environnement).<\/p>\n<p>Un r\u00e9seau de neurones peut \u00eatre tr\u00e8s sensible \u00e0 de petits changements, ce qui entra\u00eenera une baisse des performances du mod\u00e8le. Le suivi et la documentation du travail sont la premi\u00e8re \u00e9tape \u00e0 envisager pour standardiser l'environnement et le mod\u00e9lisation.<\/p>\n<p><img decoding=\"async\" alt=\"Nous travaillons avec des r\u00e9seaux neuronaux : liste de contr\u00f4le pour le d\u00e9bogage\" src=\"\/wp-content\/uploads\/2019\/03\/37b3e4ef97ea39a3d28ffca5c1dbf1e5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nJ'esp\u00e8re que ce post pourra servir de point de d\u00e9part pour que vous commenciez \u00e0 d\u00e9bugger votre r\u00e9seau de neurones.<\/p>\n<blockquote><p><b>Skillbox recommande :<\/b><\/p>\n<ul>\n<li>Cours pratique de deux ans <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\">\"Je suis un d\u00e9veloppeur web PRO\"<\/a><\/noindex>.<\/li>\n<li>Cours en ligne <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\">\"D\u00e9veloppeur C# depuis 0\"<\/a><\/noindex>.<\/li>\n<li>Cours pratique d'un an <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\">\u00abD\u00e9veloppeur PHP de 0 \u00e0 PRO\u00bb<\/a><\/noindex>.\n<\/li>\n<\/ul>\n<\/blockquote>\n<p>Source : <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.2 - 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\/fr\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Travaillons avec des r\u00e9seaux de neurones : checklist pour le d\u00e9bogage | ProHoster","description":"Code des produits logiciels pour machines.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/30028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=30028"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/30028\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=30028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=30028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=30028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}