{"id":1258,"date":"2017-12-06T21:18:07","date_gmt":"2017-12-06T21:18:07","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=1258"},"modified":"2024-12-16T22:32:44","modified_gmt":"2024-12-16T19:32:44","slug":"simple-example-tensorflow","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2017\/12\/06\/simple-example-tensorflow\/","title":{"rendered":"Exemple simple de TensorFlow"},"content":{"rendered":"<p>Je pr\u00e9sente \u00e0 votre attention un exemple simple de travail avec un framework pour travailler avec le Deep Learning &#8211; TensorFlow. Dans cet exemple, nous allons apprendre \u00e0 un r\u00e9seau de neurones \u00e0 d\u00e9tecter les nombres positifs, n\u00e9gatifs et z\u00e9ro. Installation de <a href=\"https:\/\/www.tensorflow.org\/\" target=\"_blank\" rel=\"noopener\">TensorFlow<\/a> et <a href=\"https:\/\/developer.nvidia.com\/ cuda -downloads\" target=\"_blank\" rel=\"noopener\">CUDA<\/a> Je vous informe, cette t\u00e2che n&#8217;est vraiment pas facile)<\/p>\n<p>Pour r\u00e9soudre les probl\u00e8mes de classification, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0 %BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8 \" target=\"_blank\" rel=\"noopener\">classificateurs<\/a>. <a href=\"https:\/\/www.tensorflow.org\/\" target=\"_blank\" rel=\"noopener\">TensorFlow<\/a> dispose de plusieurs classificateurs de haut niveau pr\u00eats \u00e0 l&#8217;emploi qui n\u00e9cessitent une configuration minimale pour fonctionner. Nous allons d&#8217;abord entra\u00eener <a href=\"https:\/\/www.tensorflow.org\/versions\/master\/api_docs\/python\/tf\/estimator\/DNNClassifier\" target=\"_blank\" rel=\"noopener\">DNNClassifier<\/a> en utilisant ensemble de donn\u00e9es avec des nombres positifs, n\u00e9gatifs et z\u00e9ro &#8211; avec les \u00ab\u00a0\u00e9tiquettes\u00a0\u00bb correctes. Au niveau humain, un ensemble de donn\u00e9es est un ensemble de nombres avec des r\u00e9sultats de classification (\u00e9tiquettes)\u00a0:<\/p>\n<p><strong><em>10 &#8211; positif<\/em><\/strong><br \/><strong><em>-22 &#8211; n\u00e9gatif<\/em><\/strong><br \/><strong><em>0 &#8211; z\u00e9ro<\/em><\/strong><br \/><strong><em>42 &#8211; positif<br \/>&#8230; autres num\u00e9ros avec classification<br \/><\/em><\/strong><br \/>Ensuite, la formation commence, apr\u00e8s quoi vous pouvez saisir des nombres qui n&#8217;\u00e9taient m\u00eame pas inclus dans l&#8217;ensemble de donn\u00e9es &#8211; c&#8217;est \u00e0 dire. le r\u00e9seau de neurones doit les identifier correctement.<br \/>Vous trouverez ci-dessous le code complet du classificateur avec un g\u00e9n\u00e9rateur d&#8217;ensembles de donn\u00e9es pour la formation et les donn\u00e9es d&#8217;entr\u00e9e\u00a0:<br \/><!-- HTML g\u00e9n\u00e9r\u00e9 avec hilite.me --><\/p>\n<div style=\"background: #ffffff; d\u00e9bordement: auto; largeur: auto; bordure: gris uni; largeur de bordure: .1em .1em .1em .8em; remplissage: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">import<\/span> <span style=\"color: #0e84b5 ; font-weight\u00a0: bold;\">tensorflow<\/span><span style=\"color: #008800; font-weight: bold;\">importer<\/span> <span style=\"color: #0e84b5; font-weight: bold;\">itertools<\/span><span style=\"color: #008800; font-weight: bold;\">importer<\/span> <span style=\"color: #0e84b5; font-weight: bold;\">al\u00e9atoire<\/span><span style=\"color: #008800; font-weight: bold;\">de<\/span> <span style=\"color: #0e84b5; font-weight: bold;\">heure<\/span> <span style= \"color\u00a0: #008800\u00a0; font-weight\u00a0: bold;\">heure d'importation<\/span><span style=\"color: #008800; font-weight: bold;\">classe<\/span> <span style=\"color: #bb0066; font-weight: bold;\">ClassifiedNumber<\/span>\u00a0:__number <span style=\"color: #333333;\">=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">0<\/span>__classifiedAs <span style=\"color: #333333;\">=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">3<\/span><span style=\"color: #008800; font-weight: bold;\">def<\/span> <span style=\"color: #0066bb; font-weight: bold;\">__init__<\/span>(<span style =\"couleur\u00a0: #007020;\">soi<\/span>, nombre)\u00a0:<span style=\"color: #007020;\">soi<\/span><span style=\"color: #333333;\">.<\/span>__num\u00e9ro <span style=\"color: #333333;\">=<\/ envergure>num\u00e9ro<span style=\"color: #008800; font-weight: bold;\">if<\/span> num\u00e9ro <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd\u00a0; poids de la police\u00a0: gras;\">0<\/span>\u00a0:<span style=\"color: #007020;\">soi<\/span><span style=\"color: #333333;\">.<\/span>__classifiedAs <span style=\"color: #333333;\">=<\/ span> <span style=\"color: #0000dd; font-weight: bold;\">0<\/span> <span style=\"color: #888888;\"># z\u00e9roNum\u00e9ro <span style=\"color: #008800; font-weight: bold;\">elif<\/span> <span style=\"color: #333333;\">&gt;<\/span> <span style=\"color: # 0000dd\u00a0; poids de la police\u00a0: gras;\">0<\/span>\u00a0:<span style=\"color: #007020;\">soi<\/span><span style=\"color: #333333;\">.<\/span>__classifiedAs <span style=\"color: #333333;\">=<\/ span> <span style=\"color: #0000dd; font-weight: bold;\">1<\/span> <span style=\"color: #888888;\"># positif<\/span>Num\u00e9ro <span style=\"color: #008800; font-weight: bold;\">elif<\/span> <span style=\"color: #333333;\">&lt;<\/span> <span style=\"color: # 0000dd\u00a0; poids de la police\u00a0: gras;\">0<\/span>\u00a0:<span style=\"color: #007020;\">soi<\/span><span style=\"color: #333333;\">.<\/span>__classifiedAs <span style=\"color: #333333;\">=<\/ span> <span style=\"color: #0000dd; font-weight: bold;\">2<\/span> <span style=\"color: #888888;\"># n\u00e9gatif<\/span><span style=\"color: #008800; font-weight: bold;\">def<\/span> <span style=\"color: #0066bb; font-weight: bold;\">number<\/span>(<span style =\"color: #007020;\">soi<\/span>)\u00a0:<span style=\"color: #008800; font-weight: bold;\">return<\/span> <span style=\"color: #007020;\">self<\/span><span style=\"color: #333333; \">.<\/span>__num\u00e9ro<span style=\"color: #008800; font-weight: bold;\">def<\/span> <span style=\"color: #0066bb; font-weight: bold;\">classifiedAs<\/span>(<span style =\"color: #007020;\">soi<\/span>)\u00a0:<span style=\"color: #008800; font-weight: bold;\">return<\/span> <span style=\"color: #007020;\">self<\/span><span style=\"color: #333333; \">.<\/span>__classifiedAs<span style=\"color: #008800; font-weight: bold;\">def<\/span> <span style=\"color: #0066bb; font-weight: bold;\">classifiedAsString<\/span>(classifiedAs)\u00a0:<span style=\"color: #008800; font-weight: bold;\">if<\/span> class\u00e9 comme <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd\u00a0; poids de la police\u00a0: gras;\">0<\/span>\u00a0:<span style=\"color: #008800; font-weight: bold;\">retour<\/span> <span style=\"background-color: #fff0f0;\">\"Z\u00e9ro\"<\/span><span style=\"color: #008800; font-weight: bold;\">elif<\/span> class\u00e9As <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd\u00a0; poids de la police\u00a0: gras;\">1<\/span>\u00a0:<span style=\"color: #008800; font-weight: bold;\">retour<\/span> <span style=\"background-color: #fff0f0;\">\"Positif\"<\/span><span style=\"color: #008800; font-weight: bold;\">elif<\/span> class\u00e9As <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd\u00a0; poids de la police\u00a0: gras;\">2<\/span>\u00a0:<span style=\"color: #008800; font-weight: bold;\">return<\/span> <span style=\"background-color: #fff0f0;\">\"Negative\"<\/span><span style=\"color: #008800; font-weight: bold;\">def<\/span> <span style=\"color: #0066bb; font-weight: bold;\">trainDatasetFunction<\/span>()\u00a0:trainNumbers <span style=\"color: #333333;\">=<\/span> []trainNumberLabels <span style=\"color: #333333;\">=<\/span> []<span style=\"color: #008800; font-weight: bold;\">pour<\/span> i <span style=\"color: #000000; font-weight: bold;\">in<\/span> <span style =\"color: #007020;\">plage<\/span>(<span style=\"color: #333333;\">-<\/span><span style=\"color: #0000dd; font-weight: bold;\">1000<\/span>, <span style=\"color: #0000dd; font-weight: bold;\">1001<\/span>)\u00a0:num\u00e9ro <span style=\"color: #333333;\">=<\/span> ClassifiedNumber(i)trainNumbers<span style=\"color: #333333;\">.<\/span>append(number<span style=\"color: #333333;\">.<\/span>number())trainNumberLabels<span style=\"color: #333333;\">.<\/span>append(number<span style=\"color: #333333;\">.<\/span>classifiedAs())<span style=\"color: #008800; font-weight: bold;\">return<\/span> ( {<span style=\"background-color: #fff0f0;\">\"number\"<\/span> : trainNumbers } , trainNumber\u00c9tiquettes)<span style=\"color: #008800; font-weight: bold;\">def<\/span> <span style=\"color: #0066bb; font-weight: bold;\">inputDatasetFunction<\/span>()\u00a0:<span style=\"color: #008800; font-weight: bold;\">global<\/span> randomSeedrandom<span style=\"color: #333333;\">.<\/span>seed(randomSeed) <span style=\"color: #888888;\"># pour obtenir le m\u00eame r\u00e9sultat<\/span>nombres <span style=\"color: #333333;\">=<\/span> []<span style=\"color: #008800; font-weight: bold;\">pour<\/span> i <span style=\"color: #000000; font-weight: bold;\">in<\/span> <span style =\"color\u00a0: #007020;\">plage<\/span>(<span style=\"color\u00a0: #0000dd; font-weight\u00a0: bold;\">0<\/span>, <span style=\"color\u00a0: #0000dd; font-weight\u00a0: bold;\">4<\/span>)\u00a0:nombres<span style=\"color: #333333;\">.<\/span>append(random<span style=\"color: #333333;\">.<\/span>randint(<span style=\"color: #333333; \">-<\/span><span style=\"color\u00a0: #0000dd; font-weight\u00a0: bold;\">9999999<\/span>, <span style=\"color\u00a0: #0000dd\u00a0; poids de la police\u00a0: gras\u00a0;\">9999999<\/span>))<span style=\"color: #008800; font-weight: bold;\">return<\/span> {<span style=\"background-color: #fff0f0;\">\"number\"<\/span> : nombres }<span style=\"color: #008800; font-weight: bold;\">def<\/span> <span style=\"color: #0066bb; font-weight: bold;\">main<\/span>()\u00a0:<span style=\"color: #007020;\">print<\/span>(<span style=\"background-color: #fff0f0;\">\"Test de classificateur de nombres TensorFlow Positif-N\u00e9gatif-Z\u00e9ro par demensdeum 2017 (demensdeum@gmail. com)\"<\/span>)maximalClassesCount <span style=\"color: #333333;\">=<\/span> <span style=\"color: #007020;\">len<\/span>(<span style=\"color: #007020;\">set< \/span>(trainDatasetFunction()[<span style=\"color: #0000dd; font-weight: bold;\">1<\/span>])) <span style=\"color: #333333;\">+<\/span> <span style=\"color: #0000dd; font-weight: bold;\">1<\/span>numberFeature <span style=\"color: #333333;\">=<\/span> tensorflow<span style=\"color: #333333;\">.<\/span>feature_column<span style=\"color: #333333;\">. <\/span>numeric_column(<span style=\"background-color: #fff0f0;\">\"num\u00e9ro\"<\/span>)classificateur <span style=\"color: #333333;\">=<\/span> tensorflow<span style=\"color: #333333;\">.<\/span>estimateur<span style=\"color: #333333;\">. <\/span>DNNClassifier(feature_columns <span style=\"color: #333333;\">=<\/span> [numberFeature], Hidden_units <span style=\"color: #333333;\">=<\/span> [<span style=\"color: #0000dd; font-weight: bold;\">10<\/span>, <span style=\"color: # 0000dd\u00a0; poids de la police\u00a0: gras;\">20<\/span>, <span style=\"color\u00a0: #0000dd; poids de la police\u00a0: gras;\">10<\/span>], n_classes <span style=\"color: #333333;\">=<\/span> maximalClassesCount)g\u00e9n\u00e9rateur <span style=\"color: #333333;\">=<\/span> classificateur<span style=\"color: #333333;\">.<\/span>train(input_fn <span style=\"color: #333333;\" >=<\/span> trainDatasetFunction, \u00e9tapes <span style=\"color: #333333;\">=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">1000<\/span>)<span style=\"color: #333333;\">.<\/span>predict(input_fn <span style=\"color: #333333;\">= <\/span> inputDatasetFunction)inputDataset <span style=\"color: #333333;\">=<\/span> inputDatasetFunction()r\u00e9sultats <span style=\"color: #333333;\">=<\/span> <span style=\"color: #007020;\">list<\/span>(itertools<span style=\"color: #333333;\">. <\/span>islice(g\u00e9n\u00e9rateur, <span style=\"color: #007020;\">len<\/span>(inputDatasetFunction()[<span style=\"background-color: #fff0f0;\">\"num\u00e9ro\"<\/span>])))je <span style=\"color: #333333;\">=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">0<\/span><span style=\"color: #008800; font-weight: bold;\">pour<\/span> r\u00e9sultat <span style=\"color: #000000; font-weight: bold;\">dans<\/span> r\u00e9sultats\u00a0:<span style=\"color: #007020;\">imprimer<\/span>(<span style=\"background-color: #fff0f0;\">\"num\u00e9ro\u00a0: %d class\u00e9 comme %s\"<\/span> <span style= \"color\u00a0: #333333;\">%<\/span> (inputDataset[<span style=\"background-color: #fff0f0;\">\"number\"<\/span>][i], classifi\u00e9AsString(result[<span style=\"background-color: #fff0f0;\">\"class_ids\"<\/span>][<span style=\"color: #0000dd; font-weight: bold;\">0<\/span> ])))je <span style=\"color: #333333;\">+=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">1<\/span>randomSeed <span style=\"color: #333333;\">=<\/span> time()principal()<\/pre>\n<\/div>\n<p>Tout commence dans la m\u00e9thode main(), nous d\u00e9finissons la colonne num\u00e9rique avec laquelle le classificateur fonctionnera &#8211; <strong>tensorflow.feature_column.numeric_column(&#8220;number&#8221;)<\/strong> Ensuite, les param\u00e8tres du classificateur sont d\u00e9finis. Il est inutile de d\u00e9crire les arguments d&#8217;initialisation actuels, car l&#8217;API change chaque jour, et vous devez absolument consulter la documentation de la version install\u00e9e de TensorFlow et ne pas vous fier \u00e0 des manuels obsol\u00e8tes.<\/p>\n<p>Ensuite, la formation est lanc\u00e9e en indiquant une fonction qui renvoie un ensemble de donn\u00e9es de nombres de -1\u00a0000 \u00e0 1\u00a0000 (<strong>trainDatasetFunction<\/strong>), avec la classification correcte de ces nombres en fonction du positif, du n\u00e9gatif ou du z\u00e9ro. Ensuite, nous soumettons en entr\u00e9e les nombres qui ne figuraient pas dans l&#8217;ensemble de donn\u00e9es de formation &#8211;\u00a0; al\u00e9atoire de -9999999 \u00e0 9999999 (<strong>inputDatasetFunction<\/strong>) pour les classer.<\/p>\n<p>Enfin, nous lan\u00e7ons des it\u00e9rations en fonction du nombre de donn\u00e9es d&#8217;entr\u00e9e (<strong>itertools.islice<\/strong>), imprimons le r\u00e9sultat, l&#8217;ex\u00e9cutons et sommes surpris\u00a0:<\/p>\n<p><!-- HTML g\u00e9n\u00e9r\u00e9 avec hilite.me --><\/p>\n<div style=\"background: #ffffff; d\u00e9bordement: auto; largeur: auto; bordure: gris uni; largeur de bordure: .1em .1em .1em .8em; remplissage: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\">num\u00e9ro\u00a0: 4063470 class\u00e9 comme positifnum\u00e9ro : 6006715 class\u00e9 Positifnum\u00e9ro\u00a0:\u00a0-5367127 class\u00e9 comme n\u00e9gatifnum\u00e9ro\u00a0: -7834276 class\u00e9 comme n\u00e9gatif<\/pre>\n<\/div>\n<blockquote class=\"imgur-embed-pub\" lang=\"fr\" data-id=\"mTS5bXR\">\n<p><a href=\"\/\/imgur.com\/mTS5bXR\">IL EST VIVANT<\/a <\/p>\n<\/blockquote>\n<p><script async src=\"\/\/s.imgur.com\/min\/embed.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Pour \u00eatre honn\u00eate, je suis toujours un peu surpris que le classificateur *comprenne* m\u00eame les nombres que je ne lui ai pas enseign\u00e9s. J&#8217;esp\u00e8re qu&#8217;\u00e0 l&#8217;avenir je comprendrai le sujet de l&#8217;apprentissage automatique plus en d\u00e9tail et qu&#8217;il y aura plus de tutoriels.<\/p>\n<p>GitLab\u00a0:<br \/><a href=\"https:\/\/gitlab.com\/demensdeum\/MachineLearning\" target=\"_blank\" rel=\"noopener\">https:\/\/gitlab.com\/demensdeum\/MachineLearning<\/a><\/p>\n<p>Liens\u00a0:<br \/><a href=\"https:\/\/developers.googleblog.com\/2017\/09\/introducing-tensorflow-datasets.html\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.googleblog.com\/2017\/09\/introducing-tensorflow-datasets.html<\/a><br \/>\n<a href=\"https:\/\/www.tensorflow.org\/versions\/master\/api_docs\/python\/tf\/estimator\/DNNClassifier\" target=\"_blank\" rel=\"noopener\">https:\/\/www.tensorflow.org\/versions\/master\/api_docs\/python\/tf\/estimator\/DNNClassifier<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je pr\u00e9sente \u00e0 votre attention un exemple simple de travail avec un framework pour travailler avec le Deep Learning &#8211; TensorFlow. Dans cet exemple, nous allons apprendre \u00e0 un r\u00e9seau de neurones \u00e0 d\u00e9tecter les nombres positifs, n\u00e9gatifs et z\u00e9ro. Installation de TensorFlow et CUDA Je vous informe, cette t\u00e2che n&#8217;est vraiment pas facile) Pour<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/fr\/2017\/12\/06\/simple-example-tensorflow\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Exemple simple de TensorFlow&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,52],"tags":[87,86],"class_list":["post-1258","post","type-post","status-publish","format-standard","hentry","category-techie","category-tutorials","tag-machine-learning","tag-tensorflow","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"fr","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/1258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=1258"}],"version-history":[{"count":26,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/1258\/revisions"}],"predecessor-version":[{"id":3988,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/1258\/revisions\/3988"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=1258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=1258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=1258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}