{"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\/de\/2017\/12\/06\/simple-example-tensorflow\/","title":{"rendered":"Einfaches TensorFlow-Beispiel"},"content":{"rendered":"<p>Ich pr\u00e4sentiere Ihnen ein einfaches Beispiel f\u00fcr die Arbeit mit einem Framework f\u00fcr die Arbeit mit Deep Learning &#8211; TensorFlow. In diesem Beispiel bringen wir einem neuronalen Netzwerk bei, positive, negative Zahlen und Nullen zu erkennen. Installation von <a href=\"https:\/\/www.tensorflow.org\/\" target=\"_blank\" rel=\"noopener\">TensorFlow<\/a> und <a href=\"https:\/\/developer.nvidia.com\/ cuda -downloads\" target=\"_blank\" rel=\"noopener\">CUDA<\/a> Ich sage Ihnen, diese Aufgabe ist wirklich nicht einfach)<\/p>\n<p>Um Klassifizierungsprobleme zu l\u00f6sen, <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\">Klassifikatoren<\/a>. <a href=\"https:\/\/www.tensorflow.org\/\" target=\"_blank\" rel=\"noopener\">TensorFlow<\/a> verf\u00fcgt \u00fcber mehrere vorgefertigte High-Level-Klassifikatoren, f\u00fcr deren Funktion nur eine minimale Konfiguration erforderlich ist. Zuerst trainieren wir <a href=\"https:\/\/www.tensorflow.org\/versions\/master\/api_docs\/python\/tf\/estimator\/DNNClassifier\" target=\"_blank\" rel=\"noopener\">DNNClassifier<\/a> mit Datensatz mit positiven, negativen Zahlen und Null &#8211; mit den richtigen \u201eBeschriftungen\u201c. Auf menschlicher Ebene ist ein Datensatz eine Reihe von Zahlen mit Klassifizierungsergebnissen (Beschriftungen):<\/p>\n<p><strong><em>10 &#8211; positiv<\/em><\/strong><br \/><strong><em>-22 &#8211; negativ<\/em><\/strong><br \/><strong><em>0 &#8211; Null<\/em><\/strong><br \/><strong><em>42 &#8211; positiv<br \/>&#8230; andere Zahlen mit Klassifizierung<br \/><\/em><\/strong><br \/>Als n\u00e4chstes beginnt das Training. Anschlie\u00dfend k\u00f6nnen Sie Zahlen eingeben, die noch nicht einmal im Datensatz enthalten waren &#8211; Das neuronale Netzwerk muss sie korrekt identifizieren.<br \/>Nachfolgend finden Sie den vollst\u00e4ndigen Code des Klassifikators mit einem Datensatzgenerator f\u00fcr Trainings- und Eingabedaten:<br \/><!-- HTML generiert mit hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid grey; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight:bold;\">import<\/span> <span style=\"color: #0e84b5 ; Schriftst\u00e4rke: fett;\">tensorflow<\/span><span style=\"color: #008800; Font-weight: Bold;\">Import<\/span> <span Style=\"color: #0e84b5; Font-Weight: Bold;\">itertools<\/span><span style=\"color: #008800; Font-Weight: Bold;\">Import<\/span> <span Style=\"Color: #0e84b5; Font-Weight: Bold;\">Zuf\u00e4llig<\/span><span style=\"color: #008800; Font-weight: Bold;\">von<\/span> <span Style=\"color: #0e84b5; Font-Weight: Bold;\">Zeit<\/span> <span Style= \"Farbe: #008800; Schriftst\u00e4rke: fett;\">Import<\/span> Zeit<span style=\"color: #008800; Font-Weight: Bold;\">Klasse<\/span> <span Style=\"Color: #bb0066; Font-Weight: Bold;\">ClassifiedNumber<\/span>:__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 =\"color: #007020;\">selbst<\/span>, Zahl):<span style=\"color: #007020;\">self<\/span><span style=\"color: #333333;\">.<\/span>__number <span style=\"color: #333333;\">=<\/ span>Nummer<span style=\"color: #008800; Font-weight: Bold;\">if<\/span> Zahl <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd; Schriftst\u00e4rke: fett;\">0<\/span>:<span style=\"color: #007020;\">self<\/span><span style=\"color: #333333;\">.<\/span>__classifiedAs <span style=\"color: #333333;\">=<\/ span> <span style=\"color: #0000dd; Schriftart: fett;\">0<\/span> <span style=\"color: #888888;\"># Null<\/span><span style=\"color: #008800; Font-weight: Bold;\">elif<\/span> Zahl <span style=\"color: #333333;\">&gt;<\/span> <span style=\"color: # 0000dd; Schriftst\u00e4rke: fett;\">0<\/span>:<span style=\"color: #007020;\">self<\/span><span style=\"color: #333333;\">.<\/span>__classifiedAs <span style=\"color: #333333;\">=<\/ span> <span style=\"color: #0000dd; Schriftart: fett;\">1<\/span> <span style=\"color: #888888;\"># positiv<\/span><span style=\"color: #008800; Font-weight: Bold;\">elif<\/span> Zahl <span style=\"color: #333333;\">&lt;<\/span> <span style=\"color: # 0000dd; Schriftst\u00e4rke: fett;\">0<\/span>:<span style=\"color: #007020;\">self<\/span><span style=\"color: #333333;\">.<\/span>__classifiedAs <span style=\"color: #333333;\">=<\/ span> <span style=\"color: #0000dd; Schriftart: fett;\">2<\/span> <span style=\"color: #888888;\"># negativ<\/span><span style=\"color: #008800;font-weight:bold;\">def<\/span> <span style=\"color: #0066bb;font-weight:bold;\">number<\/span>(<span style =\"color: #007020;\">selbst<\/span>):<span style=\"color: #008800; font-weight: Bold;\">return<\/span> <span style=\"color: #007020;\">self<\/span><span style=\"color: #333333; \">.<\/span>__Nummer<span style=\"color: #008800;font-weight:bold;\">def<\/span> <span style=\"color: #0066bb;font-weight:bold;\">classifiedAs<\/span>(<span style =\"color: #007020;\">selbst<\/span>):<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):<span style=\"color: #008800; Font-weight: Bold;\">if<\/span> klassifiziert als <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd; Schriftst\u00e4rke: fett;\">0<\/span>:<span style=\"color: #008800; Schriftst\u00e4rke: Bold;\">Zur\u00fcck<\/span> <span style=\"background-color: #fff0f0;\">\"Null\"<\/span><span style=\"color: #008800; Font-weight: Bold;\">elif<\/span> klassifiziert als <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd; Schriftst\u00e4rke: fett;\">1<\/span>:<span style=\"color: #008800; Schriftst\u00e4rke: Bold;\">Zur\u00fcck<\/span> <span style=\"background-color: #fff0f0;\">\"Positiv\"<\/span><span style=\"color: #008800; Font-weight: Bold;\">elif<\/span> klassifiziert als <span style=\"color: #333333;\">==<\/span> <span style=\"color: # 0000dd; Schriftst\u00e4rke: fett;\">2<\/span>:<span style=\"color: #008800; Schriftst\u00e4rke: Bold;\">Zur\u00fcck<\/span> <span style=\"background-color: #fff0f0;\">\"Negativ\"<\/span><span style=\"color: #008800;font-weight:bold;\">def<\/span> <span style=\"color: #0066bb;font-weight:bold;\">trainDatasetFunction<\/span>():trainNumbers <span style=\"color: #333333;\">=<\/span> []trainNumberLabels <span style=\"color: #333333;\">=<\/span> []<span style=\"color: #008800; Font-weight: Bold;\">f\u00fcr<\/span> i <span style=\"color: #000000; Font-Weight: Bold;\">im<\/span> <span-Stil =\"color: #007020;\">Bereich<\/span>(<span style=\"color: #333333;\">-<\/span><span style=\"color: #0000dd; Schriftst\u00e4rke: fett;\">1000<\/span>, <span style=\"color: #0000dd; Schriftst\u00e4rke: fett;\">1001<\/span>):Zahl <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 } , trainNumberLabels)<span style=\"color: #008800;font-weight:bold;\">def<\/span> <span style=\"color: #0066bb;font-weight:bold;\">inputDatasetFunction<\/span>():<span style=\"color: #008800; Schriftart: fett;\">global<\/span> randomSeedrandom<span style=\"color: #333333;\">.<\/span>seed(randomSeed) <span style=\"color: #888888;\"># um das gleiche Ergebnis zu erhalten<\/span>Zahlen <span style=\"color: #333333;\">=<\/span> []<span style=\"color: #008800; Font-weight: Bold;\">f\u00fcr<\/span> i <span style=\"color: #000000; Font-Weight: Bold;\">im<\/span> <span-Stil =\"color: #007020;\">range<\/span>(<span style=\"color: #0000dd; font-weight: Bold;\">0<\/span>, <span style=\"color: #0000dd; Schriftst\u00e4rke: fett;\">4<\/span>):Zahlen<span style=\"color: #333333;\">.<\/span>append(random<span style=\"color: #333333;\">.<\/span>randint(<span style=\"color: #333333; \">-<\/span><span style=\"color: #0000dd;font-weight:bold;\">9999999<\/span>, <span style=\"color: #0000dd; Schriftst\u00e4rke: fett;\">9999999<\/span>))<span style=\"color: #008800; Font-weight: Bold;\">Zur\u00fcck<\/span> {<span style=\"background-color: #fff0f0;\">\"number\"<\/span> : Zahlen }<span style=\"color: #008800;font-weight:bold;\">def<\/span> <span style=\"color: #0066bb;font-weight:bold;\">main<\/span>():<span style=\"color: #007020;\">print<\/span>(<span style=\"background-color: #fff0f0;\">\"TensorFlow Positiv-Negativ-Null-Zahlenklassifikatortest von 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;\">\"number\"<\/span>)Klassifikator <span style=\"color: #333333;\">=<\/span> tensorflow<span style=\"color: #333333;\">.<\/span>estimator<span style=\"color: #333333;\">. <\/span>DNNClassifier(feature_columns <span style=\"color: #333333;\">=<\/span> [numberFeature], versteckte_Einheiten <span style=\"color: #333333;\">=<\/span> [<span style=\"color: #0000dd; Font-weight: Bold;\">10<\/span>, <span style=\"color: # 0000dd; Schriftst\u00e4rke: Bold;\">20<\/span>, <span style=\"color: #0000dd; Schriftst\u00e4rke: Bold;\">10<\/span>], n_classes <span style=\"color: #333333;\">=<\/span> maximaleClassesCount)Generator <span style=\"color: #333333;\">=<\/span> Klassifikator<span style=\"color: #333333;\">.<\/span>train(input_fn <span style=\"color: #333333;\" >=<\/span> trainDatasetFunction, Schritte <span style=\"color: #333333;\">=<\/span> <span style=\"color: #0000dd; Schriftst\u00e4rke: fett;\">1000<\/span>)<span style=\"color: #333333;\">.<\/span>predict(input_fn <span style=\"color: #333333;\">= <\/span> inputDatasetFunction)inputDataset <span style=\"color: #333333;\">=<\/span> inputDatasetFunction()Ergebnisse <span style=\"color: #333333;\">=<\/span> <span style=\"color: #007020;\">list<\/span>(itertools<span style=\"color: #333333;\">. <\/span>islice(generator, <span style=\"color: #007020;\">len<\/span>(inputDatasetFunction()[<span style=\"background-color: #fff0f0;\">\"number\"<\/span>])))i <span style=\"color: #333333;\">=<\/span> <span style=\"color: #0000dd; Font-weight: Bold;\">0<\/span><span style=\"color: #008800; Font-weight: Bold;\">f\u00fcr<\/span> Ergebnis <span Style=\"color: #000000; Font-Weight: Bold;\">in<\/span> Ergebnisse:<span style=\"color: #007020;\">print<\/span>(<span style=\"background-color: #fff0f0;\">\"number: %d klassifiziert als %s\"<\/span> <span style= \"color: #333333;\">%<\/span> (inputDataset[<span style=\"background-color: #fff0f0;\">\"number\"<\/span>][i], klassifiziertAsString(result[<span style=\"background-color: #fff0f0;\">\"class_ids\"<\/span>][<span style=\"color: #0000dd; font-weight: Bold;\">0<\/span> ])))i <span style=\"color: #333333;\">+=<\/span> <span style=\"color: #0000dd; Font-weight: Bold;\">1<\/span>randomSeed <span style=\"color: #333333;\">=<\/span> time()haupts\u00e4chlich()<\/pre>\n<\/div>\n<p>Alles beginnt mit der main()-Methode. Wir legen die numerische Spalte fest, mit der der Klassifikator arbeiten soll &#8211; <strong>tensorflow.feature_column.numeric_column(&#8220;number&#8221;)<\/strong> Als n\u00e4chstes werden die Klassifikatorparameter festgelegt. Es ist sinnlos, die aktuellen Initialisierungsargumente zu beschreiben, da sich die API t\u00e4glich \u00e4ndert, und Sie sollten sich unbedingt die Dokumentation f\u00fcr die installierte Version von TensorFlow ansehen und sich nicht auf veraltete Handb\u00fccher verlassen.<\/p>\n<p>Als n\u00e4chstes wird das Training gestartet, das eine Funktion angibt, die einen Datensatz mit Zahlen von -1000 bis 1000 zur\u00fcckgibt (<strong>trainDatasetFunction<\/strong>), mit der korrekten Klassifizierung dieser Zahlen basierend auf positiv, negativ oder Null. Als n\u00e4chstes \u00fcbermitteln wir als Eingabe Zahlen, die nicht im Trainingsdatensatz enthalten waren &#8211; zuf\u00e4llig von -9999999 bis 9999999 (<strong>inputDatasetFunction<\/strong>), um sie zu klassifizieren.<\/p>\n<p>Schlie\u00dflich starten wir Iterationen basierend auf der Anzahl der Eingabedaten (<strong>itertools.islice<\/strong>), drucken das Ergebnis aus, f\u00fchren es aus und lassen uns \u00fcberraschen:<\/p>\n<p><!-- HTML generiert mit hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid grey; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\">number: 4063470 als positiv klassifiziertNummer: 6006715 als positiv eingestuftNummer: -5367127 als negativ eingestuftNummer: -7834276 als negativ eingestuft<\/pre>\n<\/div>\n<blockquote class=\"imgur-embed-pub\" lang=\"en\" data-id=\"mTS5bXR\">\n<p><a href=\"\/\/imgur.com\/mTS5bXR\">iT&#8217;S LEBEND<\/a <\/p>\n<\/blockquote>\n<p><script async src=\"\/\/s.imgur.com\/min\/embed.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Um ehrlich zu sein, bin ich immer noch ein wenig \u00fcberrascht, dass der Klassifikator sogar die Zahlen *versteht*, die ich ihm nicht beigebracht habe. Ich hoffe, dass ich das Thema maschinelles Lernen in Zukunft besser verstehen werde und es weitere Tutorials geben wird.<\/p>\n<p>GitLab:<br \/><a href=\"https:\/\/gitlab.com\/demensdeum\/MachineLearning\" target=\"_blank\" rel=\"noopener\">https:\/\/gitlab.com\/demensdeum\/MachineLearning<\/a><\/p>\n<p>Links:<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>Ich pr\u00e4sentiere Ihnen ein einfaches Beispiel f\u00fcr die Arbeit mit einem Framework f\u00fcr die Arbeit mit Deep Learning &#8211; TensorFlow. In diesem Beispiel bringen wir einem neuronalen Netzwerk bei, positive, negative Zahlen und Nullen zu erkennen. Installation von TensorFlow und CUDA Ich sage Ihnen, diese Aufgabe ist wirklich nicht einfach) Um Klassifizierungsprobleme zu l\u00f6sen, Klassifikatoren.<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/de\/2017\/12\/06\/simple-example-tensorflow\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Einfaches TensorFlow-Beispiel&#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":"de","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\/de\/wp-json\/wp\/v2\/posts\/1258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=1258"}],"version-history":[{"count":26,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/1258\/revisions"}],"predecessor-version":[{"id":3988,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/1258\/revisions\/3988"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=1258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=1258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=1258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}