{"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\/es\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki","title":{"rendered":"Trabajamos con redes neuronales: lista de verificaci\u00f3n para depuraci\u00f3n","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Trabajamos con redes neuronales: lista de verificaci\u00f3n para depuraci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/03\/8ce45093bfe44092cb25d947c32bb0b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEl c\u00f3digo de los productos de software para el aprendizaje autom\u00e1tico a menudo es complicado y bastante enredado. Detectar y eliminar errores en \u00e9l es una tarea que consume muchos recursos. Incluso los m\u00e1s simples <noindex><a rel=\"nofollow\" href=\"https:\/\/cs.stanford.edu\/people\/eroberts\/courses\/soco\/projects\/neural-networks\/Architecture\/feedforward.html\">redes neuronales de conexi\u00f3n directa<\/a><\/noindex> requieren un enfoque serio en la arquitectura de la red, la inicializaci\u00f3n de los pesos, y la optimizaci\u00f3n de la red. Un peque\u00f1o error puede llevar a problemas desagradables.<\/p>\n<p>Este art\u00edculo est\u00e1 dedicado al algoritmo para depurar sus redes neuronales.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Skillbox recomienda:<\/b> Curso pr\u00e1ctico <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\">Desarrollador de Python desde cero<\/a><\/noindex>.<\/p>\n<p><b>Recordamos:<\/b> <i>para todos los lectores de \u00abHabr\u00bb \u2014 un descuento de 10,000 rublos al registrarse en cualquier curso de Skillbox usando el c\u00f3digo promocional \u00abHabr\u00bb.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h3>El algoritmo consta de cinco etapas:<\/h3>\n<p><\/p>\n<ul>\n<li>inicio simple;<\/li>\n<li>confirmaci\u00f3n de p\u00e9rdidas;<\/li>\n<li>verificaci\u00f3n de resultados intermedios y conexiones;<\/li>\n<li>diagn\u00f3stico de par\u00e1metros;<\/li>\n<li>control del funcionamiento.<\/li>\n<\/ul>\n<p>\nSi hay algo que le parece m\u00e1s interesante que el resto, puede saltar directamente a esas secciones. <\/p>\n<h3>Inicio simple<\/h3>\n<p>\nDepurar una red neuronal con una arquitectura compleja, regularizaci\u00f3n y un programador de tasa de aprendizaje es m\u00e1s complicado que una convencional. Aqu\u00ed estamos siendo un poco ingeniosos, ya que este punto tiene una relaci\u00f3n indirecta con la depuraci\u00f3n, pero sigue siendo una recomendaci\u00f3n importante.<\/p>\n<p>El inicio simple consiste en crear un modelo simplificado y entrenarlo en un \u00fanico conjunto (punto) de datos.<\/p>\n<p><b>Primero creamos un modelo simplificado<\/b><\/p>\n<p>Para un inicio r\u00e1pido, creamos una peque\u00f1a red con una sola capa oculta y verificamos que todo funcione correctamente. Luego, complicamos gradualmente el modelo, revisando cada nuevo aspecto de su estructura (capa adicional, par\u00e1metro, etc.), y avanzamos.<\/p>\n<p><b>Entrenamos el modelo en un \u00fanico conjunto (punto) de datos<\/b><\/p>\n<p>Como comprobaci\u00f3n r\u00e1pida de la funcionalidad de su proyecto, puede utilizar uno o dos puntos de datos para el entrenamiento y confirmar que el sistema est\u00e1 funcionando correctamente. La red neuronal debe mostrar un 100% de precisi\u00f3n en el entrenamiento y la verificaci\u00f3n. Si no es as\u00ed, el modelo puede ser demasiado peque\u00f1o o ya tiene un error.<\/p>\n<p>Incluso si todo est\u00e1 bien, prepare el modelo para pasar una o varias \u00e9pocas antes de continuar.<\/p>\n<h3>Evaluaci\u00f3n de p\u00e9rdidas<\/h3>\n<p>\nLa evaluaci\u00f3n de p\u00e9rdidas es la principal forma de ajustar el rendimiento del modelo. Debe asegurarse de que la p\u00e9rdida corresponda a la tarea y que las funciones de p\u00e9rdida se eval\u00faen en una escala correcta. Si utiliza m\u00e1s de un tipo de p\u00e9rdida, aseg\u00farese de que todas est\u00e9n en el mismo orden y correctamente escaladas.<\/p>\n<p>Es importante prestar atenci\u00f3n a las p\u00e9rdidas iniciales. Verifique cu\u00e1n cerca est\u00e1 el resultado real del esperado, si el modelo comenz\u00f3 desde una suposici\u00f3n aleatoria. En <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#baby\">el trabajo de Andrey Karpathy se propone lo siguiente<\/a><\/noindex>: \"Aseg\u00farese de que est\u00e1 obteniendo el resultado esperado al comenzar con un n\u00famero reducido de par\u00e1metros. Es mejor verificar inmediatamente la p\u00e9rdida de datos (con el grado de regularizaci\u00f3n establecido en cero). Por ejemplo, para CIFAR-10 con el clasificador Softmax, esperamos que las p\u00e9rdidas iniciales sean 2.302, porque la probabilidad difusa esperada es de 0.1 para cada clase (ya que hay 10 clases), y la p\u00e9rdida Softmax es la probabilidad logar\u00edtmica negativa de la clase correcta, que es -ln(0.1) = 2.302.\"<\/p>\n<p>Para el ejemplo binario, simplemente se realiza un c\u00e1lculo similar para cada una de las clases. Por ejemplo, los datos son: 20% de 0's y 80% de 1's. La p\u00e9rdida inicial esperada ser\u00e1 de hasta \u20130,2ln (0,5) \u20130,8ln (0,5) = 0,693147. Si el resultado es mayor que 1, esto puede indicar que los pesos de la red neuronal no est\u00e1n equilibrados correctamente o que los datos no est\u00e1n normalizados.<\/p>\n<h3>Verificamos los resultados intermedios y las conexiones <\/h3>\n<p>\nPara depurar la red neuronal es necesario entender la din\u00e1mica de los procesos dentro de la red y el papel de cada una de las capas intermedias, ya que est\u00e1n vinculadas. Aqu\u00ed hay errores t\u00edpicos con los que puede encontrarse:<\/p>\n<ul>\n<li>expresiones incorrectas para las actualizaciones del gradiente;<\/li>\n<li>no se aplican actualizaciones de peso;<\/li>\n<li>gradientes que desaparecen o gradientes explosivos (exploding gradients).<\/li>\n<\/ul>\n<p>\nSi los valores del gradiente son cero, significa que la tasa de aprendizaje en el optimizador es demasiado baja, o que se ha encontrado con una expresi\u00f3n incorrecta para la actualizaci\u00f3n del gradiente.<\/p>\n<p>Adem\u00e1s, es necesario monitorear los valores de las funciones de activaci\u00f3n, los pesos y las actualizaciones de cada una de las capas. Por ejemplo, la magnitude de las actualizaciones de par\u00e1metros (pesos y sesgos) <noindex><a rel=\"nofollow\" href=\"https:\/\/cs231n.github.io\/neural-networks-3\/#summary\">deber\u00eda ser 1-e3<\/a><\/noindex>.<\/p>\n<p>Existen fen\u00f3menos que se han denominado \u201cDying ReLU\u201d o <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Vanishing_gradient_problem\">\u201cel problema del gradiente que desaparece\u201d<\/a><\/noindex>, cuando las neuronas ReLU producir\u00e1n cero despu\u00e9s de aprender un gran valor negativo (bias) para sus pesos. Estas neuronas nunca m\u00e1s se activar\u00e1n en ning\u00fan lugar de los datos.<\/p>\n<p>Puedes usar la verificaci\u00f3n del gradiente para identificar estos errores aproximando el gradiente mediante un enfoque num\u00e9rico. Si es cercano a los gradientes calculados, entonces la retropropagaci\u00f3n se ha implementado correctamente. Para crear una verificaci\u00f3n del gradiente, consulta estos maravillosos recursos de CS231. <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#gradcheck\">aqu\u00ed<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/optimization-1\/#gradcompute\">aqu\u00ed<\/a><\/noindex>, as\u00ed como con <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=P6EtCVrvYPU\">la lecci\u00f3n<\/a><\/noindex> de Andrew Ng sobre este tema.<\/p>\n<p><noindex>Faizan Shaikh<\/noindex> indica tres m\u00e9todos principales para visualizar redes neuronales:<\/p>\n<ul>\n<li>M\u00e9todos preliminares: m\u00e9todos simples que nos muestran la estructura general del modelo entrenado. Incluyen la visualizaci\u00f3n de formas o filtros de capas individuales de la red neuronal y par\u00e1metros en cada capa.<\/li>\n<li> Basados en activaciones. Aqu\u00ed decodificamos las activaciones de neuronas individuales o grupos de neuronas para entender sus funciones.<\/li>\n<li> Basados en gradientes. Estos m\u00e9todos tienden a manipular los gradientes que se generan durante la propagaci\u00f3n hacia adelante y hacia atr\u00e1s al entrenar el modelo (incluyendo mapas de importancia y mapas de activaci\u00f3n por clase).<\/li>\n<\/ul>\n<p>\nHay varias herramientas \u00fatiles para visualizar las activaciones y conexiones de capas individuales, como <noindex><a rel=\"nofollow\" href=\"https:\/\/conx.readthedocs.io\/en\/latest\/Getting%20Started%20with%20conx.html#What-is-ConX?\">ConX<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/guide\/tensorboard_histograms\">Tensorboard<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Trabajamos con redes neuronales: lista de verificaci\u00f3n para depuraci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/03\/56e7e88983d6772ef482bc8396dd52a2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Diagn\u00f3stico de par\u00e1metros<\/h3>\n<p>\nLas redes neuronales tienen una gran cantidad de par\u00e1metros que interact\u00faan entre s\u00ed, lo que complica la optimizaci\u00f3n. De hecho, esta secci\u00f3n es objeto de investigaciones activas por parte de especialistas, por lo que las sugerencias a continuaci\u00f3n deben considerarse solo como consejos, puntos de partida desde los cuales se puede avanzar.<\/p>\n<p><b>Tama\u00f1o de lote<\/b> (batch size) \u2014 es necesario que el tama\u00f1o del lote sea lo suficientemente grande para obtener estimaciones precisas del gradiente de error, pero lo suficientemente peque\u00f1o para que el descenso de gradiente estoc\u00e1stico (SGD) pueda ordenar tu red. Los tama\u00f1os de lote peque\u00f1os llevar\u00e1n a una r\u00e1pida convergencia debido al ruido en el proceso de entrenamiento y, posteriormente, a dificultades en la optimizaci\u00f3n. Se describe m\u00e1s detalladamente <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1609.04836\">aqu\u00ed<\/a><\/noindex>.<\/p>\n<p><b>Tasa de aprendizaje<\/b> \u2014 una tasa demasiado baja llevar\u00e1 a una convergencia lenta o al riesgo de estancarse en m\u00ednimos locales. Al mismo tiempo, una alta tasa de aprendizaje causar\u00e1 divergencia en la optimizaci\u00f3n, ya que corres el riesgo de 'saltar' sobre una parte profunda pero estrecha de la funci\u00f3n de p\u00e9rdida. Intenta utilizar programaci\u00f3n de tasas para reducirla durante el proceso de entrenamiento de la red neuronal. En el curso CS231n. <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/\">hay una gran secci\u00f3n dedicada a este problema<\/a><\/noindex>.<\/p>\n<p><b>Recorte de gradiente<\/b>\u200a\u2014 recorte de los gradientes de los par\u00e1metros durante la retropropagaci\u00f3n seg\u00fan un valor m\u00e1ximo o norma l\u00edmite. Es \u00fatil para abordar problemas con cualquier gradiente explosivo que puedas encontrar en el tercer lugar.<\/p>\n<p><b>Normalizaci\u00f3n por lotes<\/b> \u2014 se utiliza para normalizar los datos de entrada de cada capa, lo que ayuda a resolver el problema del cambio de covariancia interno. Si usas Dropout y Batch Normalization juntos, <noindex><a rel=\"nofollow\" href=\"https:\/\/towardsdatascience.com\/pitfalls-of-batch-norm-in-tensorflow-and-sanity-checks-for-training-networks-e86c207548c8\">consulta este art\u00edculo<\/a><\/noindex>.<\/p>\n<p><b>Descenso de gradiente estoc\u00e1stico (SGD)<\/b> \u2014 existen varias variantes de SGD que utilizan momento, tasas de aprendizaje adaptativas y el m\u00e9todo de Nesterov. Sin embargo, ninguna de ellas tiene una ventaja clara en t\u00e9rminos de eficiencia de entrenamiento o generalizaci\u00f3n (<noindex><a rel=\"nofollow\" href=\"http:\/\/ruder.io\/optimizing-gradient-descent\/\">m\u00e1s detalles aqu\u00ed<\/a><\/noindex>).<\/p>\n<p><b>Regularizaci\u00f3n<\/b> \u2014 es crucial para construir un modelo generalizable, ya que a\u00f1ade una penalizaci\u00f3n por la complejidad del modelo o los valores extremos de los par\u00e1metros. Es una forma de reducir la varianza del modelo sin aumentar significativamente su sesgo. M\u00e1s <noindex><a rel=\"nofollow\" href=\"http:\/\/cs231n.github.io\/neural-networks-3\/#ratio\">informaci\u00f3n detallada \u2014 aqu\u00ed<\/a><\/noindex>.<\/p>\n<p>Para evaluar todo por ti mismo, es necesario desactivar la regularizaci\u00f3n y verificar el gradiente de la p\u00e9rdida de datos por tu cuenta.<\/p>\n<p><b>Dropout <\/b>\u2014 otro m\u00e9todo para regularizar tu red y prevenir el sobreajuste. Durante el entrenamiento, el dropout se realiza manteniendo la actividad de una neurona con cierta probabilidad p (hiperpar\u00e1metro) o estableci\u00e9ndola en cero en caso contrario. Como resultado, la red debe utilizar un subconjunto diferente de par\u00e1metros para cada mini-lote de entrenamiento, lo que reduce los cambios de ciertos par\u00e1metros que se vuelven dominantes.<\/p>\n<p>Importante: si usas tanto dropout como normalizaci\u00f3n por lotes, ten cuidado con el orden de estas operaciones o incluso con su uso conjunto. Todo esto a\u00fan se discute activamente y se ampl\u00eda. Aqu\u00ed hay dos discusiones importantes sobre este tema <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/39691902\/ordering-of-batch-normalization-and-dropout\">en Stackoverflow<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1801.05134\">Arxiv<\/a><\/noindex>.<\/p>\n<h3>Control del trabajo<\/h3>\n<p>\nSe trata de documentar los procesos de trabajo y los experimentos. Si no se documenta nada, se puede olvidar, por ejemplo, qu\u00e9 tasa de aprendizaje o peso de clases se est\u00e1 utilizando. Gracias al control, se pueden revisar y reproducir sin problemas los experimentos anteriores. Esto ayuda a reducir el n\u00famero de experimentos duplicados.<\/p>\n<p>Sin embargo, la documentaci\u00f3n manual puede convertirse en una tarea complicada en caso de un gran volumen de trabajo. Aqu\u00ed es donde entran en juego herramientas como Comet.ml, que ayudan a registrar autom\u00e1ticamente conjuntos de datos, cambios en el c\u00f3digo, el historial de experimentos y modelos de producci\u00f3n, incluyendo informaci\u00f3n clave sobre su modelo (hiperpar\u00e1metros, m\u00e9tricas de rendimiento del modelo y detalles sobre el entorno).<\/p>\n<p>Una red neuronal puede ser bastante sensible a peque\u00f1os cambios, lo que puede llevar a una disminuci\u00f3n en el rendimiento del modelo. Rastrear y documentar el trabajo es el primer paso que se debe tomar para estandarizar el entorno y la modelizaci\u00f3n.<\/p>\n<p><img decoding=\"async\" alt=\"Trabajamos con redes neuronales: lista de verificaci\u00f3n para depuraci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/03\/37b3e4ef97ea39a3d28ffca5c1dbf1e5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEspero que esta publicaci\u00f3n sirva como un punto de partida desde el que comience la depuraci\u00f3n de su red neuronal.<\/p>\n<blockquote><p><b>Skillbox recomienda:<\/b><\/p>\n<ul>\n<li>Curso pr\u00e1ctico de dos a\u00f1os <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\">\u00abSoy Desarrollador Web PRO\u00bb<\/a><\/noindex>.<\/li>\n<li>Curso en l\u00ednea <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\">\u00abDesarrollador C# desde cero\u00bb<\/a><\/noindex>.<\/li>\n<li>Curso pr\u00e1ctico de un a\u00f1o <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\">\u00abDesarrollador PHP desde 0 hasta PRO\u00bb<\/a><\/noindex>.\n<\/li>\n<\/ul>\n<\/blockquote>\n<p>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47Trabajamos con redes neuronales: lista de verificaci\u00f3n para la depuraci\u00f3n | ProHoster","description":"C\u00f3digo de productos de software para m\u00e1quinas.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/rabotaem-s-nejrosetyami-chek-list-dlya-otladki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/30028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=30028"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/30028\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=30028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=30028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=30028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}