{"id":54494,"date":"2019-12-27T00:00:00","date_gmt":"2019-12-26T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning"},"modified":"2020-02-18T14:02:30","modified_gmt":"2020-02-18T11:02:30","slug":"dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","title":{"rendered":"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cca85b86c64843707a2167a7fed19867.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Du stehst erneut vor der Aufgabe der Objekterkennung. Priorit\u00e4t hat die Geschwindigkeit bei akzeptabler Genauigkeit. Du nimmst die Architektur YOLOv3 und feinstimmst sie. Genauigkeit (mAp75) \u00fcber 0,95. Doch die Geschwindigkeit ist immer noch niedrig. Verdammt. <\/p>\n<p><\/p>\n<p>Heute lassen wir die Quantisierung beiseite. Im Anschluss betrachten wir <strong>Model Pruning<\/strong> \u2014 das Entfernen \u00fcberfl\u00fcssiger Teile des Netzwerks zur Beschleunigung der Inferenz bei Erhaltung der Genauigkeit. Anschaulich \u2014 wo, wie viel und wie kann ausgeschnitten werden. Wir werden besprechen, wie man dies manuell macht und wo man es automatisieren kann. Am Ende \u2014 ein Repository f\u00fcr Keras.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"vvedenie\">Einf\u00fchrung<\/h3>\n<p><\/p>\n<p>Bei meinem vorherigen Arbeitgeber, dem Permer Macroscop, habe ich mir eine Angewohnheit angeeignet \u2014 stets die Laufzeit der Algorithmen zu \u00fcberwachen. Und die Laufzeit der Netzwerke immer \u00fcber einen Angemessenheitsfilter zu \u00fcberpr\u00fcfen. In der Regel bestehen state-of-the-art Modelle in der Produktion diesen Filter nicht, was mich zum Pruning gef\u00fchrt hat. <\/p>\n<p><\/p>\n<p>Pruning \u2014 ein altes Thema, das in den <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=eZdOkDtYMoo\">Stanford-Vorlesungen behandelt wurde.<\/a><\/noindex> Im Jahr 2017. Die grundlegende Idee ist, die Gr\u00f6\u00dfe des trainierten Netzwerks zu verringern, ohne dass die Genauigkeit leidet, indem verschiedene Knoten entfernt werden. Klingt cool, aber ich h\u00f6re selten von seiner Anwendung. Wahrscheinlich mangelt es an Implementierungen, es gibt keine deutschsprachigen Artikel oder einfach alle halten pruning f\u00fcr ein Geheimnis und schweigen.<br \/>\nAber lass uns das auseinandernehmen.<\/p>\n<p><\/p>\n<h3 id=\"vzglyad-v-biologiyu\">Ein Blick in die Biologie<\/h3>\n<p><\/p>\n<p>Ich liebe es, wenn Ideen aus der Biologie im Deep Learning Anwendung finden. Auf sie, ebenso wie auf die Evolution, kann man vertrauen (wusstest du, dass ReLU sehr \u00e4hnlich ist wie <noindex><a rel=\"nofollow\" href=\"http:\/\/www.gatsby.ucl.ac.uk\/~lmate\/biblio\/dayanabbott.pdf\">die Aktivierungsfunktion von Neuronen im Gehirn?<\/a><\/noindex>?) <\/p>\n<p><\/p>\n<p>Der Prozess des Model Pruning ist ebenfalls eng mit der Biologie verbunden. Die Reaktion des Netzwerks l\u00e4sst sich mit der Plastizit\u00e4t des Gehirns vergleichen. Einige interessante Beispiele findet man im Buch <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/norman-doydzh\/plastichnost-mozga\/?utm_medium=cpc&amp;utm_source=google&amp;utm_campaign=DSA%7C149839530&amp;utm_term=&amp;utm_content=k50id%7Caud-499675211712%3Adsa-179513627318%7Ccid%7C149839530%7Caid%7C248455294996%7Cgid%7C6837176850%7Cpos%7C1t1%7Csrc%7Cg_%7Cdvc%7Cc%7Creg%7C1011993%7Crin%7C%7C&amp;k50id=6837176850%7Caud-499675211712%3Adsa-179513627318&amp;gclid=Cj0KCQiA0ZHwBRCRARIsAK0Tr-oKPqkmL7_Oxg62JZO8Jlk9zO-9nYKIRFxHi_lgoCvsQQadvUGxUzkaApgpEALw_wcB\">von Norman Doidge.<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ol>\n<li>Das Gehirn einer Frau, die von Geburt an nur eine Gehirnh\u00e4lfte hatte, hat sich selbst umprogrammiert, um die Funktionen der fehlenden H\u00e4lfte auszuf\u00fchren.<\/li>\n<li>Ein Mann hatte sich einen Teil seines Gehirns entfernt, der f\u00fcr das Sehen verantwortlich war. Im Laufe der Zeit \u00fcbernahmen andere Teile des Gehirns diese Funktionen. (Wir versuchen nicht, das zu wiederholen.)<\/li>\n<\/ol>\n<p><\/p>\n<p>So kann auch aus deinem Modell ein Teil schwacher Schichten entfernt werden. Im Zweifelsfall helfen die verbleibenden Schichten, die entfernten zu ersetzen. <\/p>\n<p><\/p>\n<h3 id=\"lyubish-transfer-learning-ili-uchish-s-nulya\">Liebst du Transfer Learning oder lernst du von Grund auf?<\/h3>\n<p><\/p>\n<p><strong>Option Nummer eins.<\/strong> Sie nutzen Transfer Learning mit Yolov3, Retina, Mask-RCNN oder U-Net. Doch h\u00e4ufig m\u00fcssen wir nicht 80 Objektklassen wie im COCO-Datensatz erkennen. In meiner Erfahrung beschr\u00e4nkt sich das alles auf 1-2 Klassen. Man k\u00f6nnte annehmen, dass die Architektur f\u00fcr 80 Klassen hier \u00fcbertrieben ist. Daher liegt der Gedanke nahe, die Architektur zu verkleinern. Und das m\u00f6chte ich gerne tun, ohne die bestehenden vortrainierten Gewichte zu verlieren.<\/p>\n<p><\/p>\n<p><strong>Option Nummer zwei.<\/strong> Vielleicht haben Sie viele Daten und Rechenressourcen oder ben\u00f6tigen einfach eine hochgradig angepasste Architektur. Das ist irrelevant. Aber Sie trainieren das Netzwerk von Grund auf. Der \u00fcbliche Ablauf besteht darin, sich die Datenstruktur anzusehen, eine \u00dcBERFL\u00dcSSIGE leistungsstarke Architektur auszuw\u00e4hlen und Dropouts gegen \u00dcberanpassung anzuwenden. Ich habe Dropouts von 0.6 gesehen, Karl. <\/p>\n<p><\/p>\n<p>In beiden F\u00e4llen l\u00e4sst sich das Netzwerk verkleinern. Wir haben einen Grund daf\u00fcr formuliert. Jetzt wollen wir herausfinden, was es mit dem Pruning auf sich hat.<\/p>\n<p><\/p>\n<h3 id=\"obschiy-algoritm\">Algorithmus insgesamt<\/h3>\n<p><\/p>\n<p>Wir haben entschieden, dass wir Faltungen entfernen k\u00f6nnen. Das sieht ziemlich einfach aus:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1c01fa318d08550c9738c88d52e36b2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das Entfernen von Faltungen belastet das Netzwerk und f\u00fchrt in der Regel zu einem gewissen Anstieg der Fehlerquote. Einerseits zeigt dieser Anstieg, wie gut wir die Faltungen entfernen (ein gro\u00dfer Anstieg deutet darauf hin, dass wir etwas falsch machen). Ein kleiner Anstieg ist jedoch durchaus akzeptabel und kann oft durch anschlie\u00dfendes leichtes Nachtraining mit einer kleinen Lernrate behoben werden. F\u00fcgen wir einen Nachtrainingsschritt hinzu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d51df9606d65fd4e7e80209743f761c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jetzt m\u00fcssen wir verstehen, wann wir unseren Lern-Pruning-Zyklus stoppen m\u00f6chten. Es kann exotische Szenarien geben, in denen wir das Netzwerk auf eine bestimmte Gr\u00f6\u00dfe und Geschwindigkeit reduzieren m\u00fcssen (z. B. f\u00fcr mobile Ger\u00e4te). Das h\u00e4ufigste Szenario ist jedoch das Fortsetzen des Zyklus, bis der Fehler \u00fcber den akzeptablen Wert steigt. F\u00fcgen wir eine Bedingung hinzu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/9032018847833b54402124a29d3acbb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Somit wird der Algorithmus klar. Es bleibt zu kl\u00e4ren, wie die zu entfernenden Faltungen identifiziert werden.<\/p>\n<p><\/p>\n<h3 id=\"poisk-udalyaemyh-svertok\">Suche nach entfernbaren Faltungen<\/h3>\n<p><\/p>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0420\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u043e\u043b\u043e\u043c \u0438 &#171;\u043e\u0442\u0441\u0442\u0440\u0435\u043b\u0438\u0432\u0430\u0442\u044c&#187; \u043b\u044e\u0431\u044b\u0435 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f, \u0445\u043e\u0442\u044c \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041d\u043e \u0440\u0430\u0437 \u0435\u0441\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f &#171;\u0441\u043b\u0430\u0431\u044b\u0435&#187; \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openreview.net\/pdf?id=rJqFGTslg\">Die kleinste L1-Metrik oder Low-Magnitude-Pruning<\/a><\/noindex>. Die Idee besagt, dass Faltungen mit geringen Gewichtswerten nur einen kleinen Einfluss auf die endg\u00fcltige Entscheidungsfindung haben. <\/li>\n<li>Die kleinste L1-Metrik unter Ber\u00fccksichtigung des Mittelwerts und der Standardabweichung. Erg\u00e4nzt durch eine Bewertung der Verteilungsart.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1512.08571\">Maskierung von Faltungen und Ausschluss der am wenigsten relevanten f\u00fcr die endg\u00fcltige Genauigkeit.<\/a><\/noindex>. Eine genauere Bestimmung von unbedeutenden Faltungen, aber sehr zeit- und ressourcenintensiv. <\/li>\n<li>Andere <\/li>\n<\/ol>\n<p><\/p>\n<p>Jede der Varianten hat ihre Daseinsberechtigung und spezifische Implementierungsmerkmale. Hier betrachten wir die Variante mit der kleinsten L1-Metrik.<\/p>\n<p><\/p>\n<h3 id=\"ruchnoy-process-dlya-yolov3\">Manueller Prozess f\u00fcr YOLOv3<\/h3>\n<p><\/p>\n<p>Die urspr\u00fcngliche Architektur enth\u00e4lt Restbl\u00f6cke. Aber egal wie effektiv sie f\u00fcr tiefe Netzwerke sind, sie st\u00f6ren uns ein wenig. Das Problem ist, dass wir in diesen Schichten keine Faltungen mit unterschiedlichen Indizes l\u00f6schen k\u00f6nnen:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d516ab886a28d62a34e6a934fdd62c12.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Deshalb heben wir die Schichten hervor, aus denen wir Faltungen ohne Bedenken entfernen k\u00f6nnen:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/f9b69d9900d641e1d5835db9cc749189.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jetzt bauen wir einen Arbeitszyklus auf:<\/p>\n<p><\/p>\n<ol>\n<li>Aktivierungen exportieren<\/li>\n<li>Sch\u00e4tzen, wie viel ausgeschnitten werden soll <\/li>\n<li>Ausschneiden<\/li>\n<li>Trainieren \u00fcber 10 Epochen mit LR=1e-4 <\/li>\n<li>Testen <\/li>\n<\/ol>\n<p><\/p>\n<p>Es ist hilfreich, Faltungen zu exportieren, um zu bewerten, welchen Teil wir zu einem bestimmten Zeitpunkt entfernen k\u00f6nnen. Beispiele f\u00fcr den Export:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cd8202e6ce1aa0cc59fbdc4bd8562427.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir sehen, dass praktisch \u00fcberall 5 % der Faltung eine sehr niedrige L1-Norm aufweisen, sodass wir sie entfernen k\u00f6nnen. Bei jedem Schritt wiederholte sich diese Auslagerung und es wurde bewertet, aus welchen Schichten und wie viel ausgeschnitten werden kann. <\/p>\n<p><\/p>\n<p>Der gesamte Prozess wurde in 4 Schritte gegliedert (hier und \u00fcberall beziehen sich die Zahlen auf die RTX 2060 Super):<\/p>\n<p><\/p>\n<table>\n<thead>\n<tr>\n<th>Schritt<\/th>\n<th>mAp75<\/th>\n<th>Anzahl der Parameter, Millionen<\/th>\n<th>Netzwerkgr\u00f6\u00dfe, MB<\/th>\n<th>Von der urspr\u00fcnglichen, %<\/th>\n<th>Durchlaufzeit, ms<\/th>\n<th>Bedienung des Zuschneidens<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0<\/td>\n<td>0.9656<\/td>\n<td>60<\/td>\n<td>241<\/td>\n<td>100<\/td>\n<td>180<\/td>\n<td>&#8212;<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>0.9622<\/td>\n<td>55<\/td>\n<td>218<\/td>\n<td>91<\/td>\n<td>175<\/td>\n<td>5 % von allem<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>0.9625<\/td>\n<td>50<\/td>\n<td>197<\/td>\n<td>83<\/td>\n<td>168<\/td>\n<td>5 % von allem<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>0.9633<\/td>\n<td>39<\/td>\n<td>155<\/td>\n<td>64<\/td>\n<td>155<\/td>\n<td>15 % f\u00fcr Schichten mit 400+ Faltungen<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>0.9555<\/td>\n<td>31<\/td>\n<td>124<\/td>\n<td>51<\/td>\n<td>146<\/td>\n<td>10 % f\u00fcr Schichten mit 100+ Faltungen<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/p>\n<p>Zu Schritt 2 kam ein positiver Effekt hinzu \u2014 der Batch-Size 4 konnte in den Speicher geladen werden, was den Prozess des Nachtrainierens erheblich beschleunigte.<br \/>\nIm Schritt 4 wurde der Prozess gestoppt, da selbst umfangreiches Nachtrainieren den mAp75 nicht auf die alten Werte hob.<br \/>\nLetztendlich gelang es, die Inferenz um <strong>15%<\/strong>, die Gr\u00f6\u00dfe um<strong> 35% <\/strong>zu reduzieren und dabei die Genauigkeit nicht zu verlieren. <\/p>\n<p><\/p>\n<h3 id=\"avtomatizaciya-dlya-bolee-prostyh-arhitektur\">Automatisierung f\u00fcr einfachere Architekturen<\/h3>\n<p><\/p>\n<p>F\u00fcr einfachere Netzwerkarchitekturen (ohne bedingte Additionen, Konkatenierungen und Residualbl\u00f6cke) kann man sich gut auf die Verarbeitung aller Faltungen konzentrieren und den Prozess des Ausschneidens von Faltungen automatisieren.<\/p>\n<p><\/p>\n<p>Diese Option habe ich implementiert. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">hier<\/a><\/noindex>.<br \/>\nEs ist ganz einfach: Sie ben\u00f6tigen lediglich die Verlustfunktion, den Optimierer und die Batch-Generatoren:<\/p>\n<p><\/p>\n<pre><code class=\"python\">import pruning\nfrom keras.optimizers import Adam\nfrom keras.utils import Sequence\n\ntrain_batch_generator = BatchGenerator...\nscore_batch_generator = BatchGenerator...\n\nopt = Adam(lr=1e-4)\npruner = pruning.Pruner(\"config.json\", \"categorical_crossentropy\", opt)\n\npruner.prune(train_batch, valid_batch)<\/code><\/pre>\n<p><\/p>\n<p>Bei Bedarf k\u00f6nnen die Konfigurationsparameter ge\u00e4ndert werden:<\/p>\n<p><\/p>\n<pre><code class=\"json\">{\n    \"input_model_path\": \"model.h5\",\n    \"output_model_path\": \"model_pruned.h5\",\n    \"finetuning_epochs\": 10, # Anzahl der Epochen f\u00fcr das Training zwischen den Pruning-Schritten\n    \"stop_loss\": 0.1, # Verlust zum Stoppen des Prozesses\n    \"pruning_percent_step\": 0.05, # Anteil der Convolutionen, die bei jedem Pruning-Schritt gel\u00f6scht werden\n    \"pruning_standart_deviation_part\": 0.2 # Verschiebung zur Begrenzung des Pruning-Anteils\n}<\/code><\/pre>\n<p><\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f. \u0426\u0435\u043b\u044c \u2014 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u044f\u0435\u043c\u044b\u0445, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0441 \u0443\u0436\u0435 &#171;\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c\u0438&#187; L1-\u043c\u0435\u0440\u0430\u043c\u0438:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/c2733d01a4d5b6e9a97a1e683d87ff45.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>So erlauben wir es, nur schwache Convolutionen aus Verteilungen zu entfernen, die der rechten \u00e4hnlich sind, und beeinflussen nicht die Entfernung aus Verteilungen, die der linken \u00e4hnlich sind:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/a9c9bee6322d268026ffb6713fc0bc86.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wenn sich die Verteilung dem Normalverteilung ann\u00e4hert, kann der Koeffizient pruning_standart_deviation_part aus folgendem ausgew\u00e4hlt werden:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/efee3eda6b8263de42e8f52541a3e949.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIch empfehle einen Toleranzwert von 2 Sigma. Alternativ kann man sich auch nicht an dieser Besonderheit orientieren und einen Wert &lt; 1,0 beibehalten.<\/p>\n<p><\/p>\n<p>Das Ergebnis ist ein Diagramm, das die Netzgr\u00f6\u00dfe, den Verlust und die Laufzeit \u00fcber den gesamten Test hinweg anzeigt, normiert auf 1.0. Zum Beispiel wurde hier die Netzgr\u00f6\u00dfe fast halbiert, ohne Qualit\u00e4tsverlust (eine kleine Faltungsnetzwerk mit 100k Gewichten):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Jedi-Technik zur Reduzierung von Convolutional Networks \u2014 Pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1048ac38b12c753e54c8d8a2dc1dc394.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Laufgeschwindigkeit unterliegt normalen Schwankungen und hat sich praktisch nicht ver\u00e4ndert. Das hat seine Erkl\u00e4rung:<\/p>\n<p><\/p>\n<ol>\n<li>Die Anzahl der Faltungen wechselt von bequemen (32, 64, 128) zu weniger praktischen f\u00fcr Grafikkarten \u2014 27, 51 usw. Ich k\u00f6nnte mich irren, aber wahrscheinlich hat das einen Einfluss.<\/li>\n<li>Die Architektur ist nicht breit, aber sequenziell. Durch Verkleinerung der Breite ber\u00fchren wir nicht die Tiefe. Dadurch reduzieren wir die Last, \u00e4ndern jedoch nicht die Geschwindigkeit.<\/li>\n<\/ol>\n<p><\/p>\n<p>Daher zeigt sich die Verbesserung in der Reduzierung der CUDA-Last w\u00e4hrend des Laufs um 20-30%, jedoch nicht in der Verringerung der Laufzeit.<\/p>\n<p><\/p>\n<h3 id=\"itogi\">Ergebnisse<\/h3>\n<p><\/p>\n<p>Lassen Sie uns reflektieren. Wir haben zwei Varianten des Pruning betrachtet \u2014 f\u00fcr YOLOv3 (wenn man manuell arbeiten muss) und f\u00fcr Netzwerke mit einfacheren Architekturen. Es ist evident, dass man in beiden F\u00e4llen die Netzgr\u00f6\u00dfe reduzieren und die Geschwindigkeit erh\u00f6hen kann, ohne an Genauigkeit zu verlieren. Ergebnisse:<\/p>\n<p><\/p>\n<ul>\n<li>Reduzierung der Gr\u00f6\u00dfe<\/li>\n<li>Beschleunigung des Laufs<\/li>\n<li>Reduzierung der CUDA-Last<\/li>\n<li>Infolgedessen legen wir Wert auf Nachhaltigkeit (Wir optimieren die zuk\u00fcnftige Nutzung von Rechenressourcen. Irgendwo freut sich jemand. <noindex><a rel=\"nofollow\" href=\"https:\/\/meduza.io\/feature\/2019\/12\/12\/kto-takaya-greta-tunberg-i-pochemu-ona-stala-chelovekom-goda-zhurnal-time\">Greta Thunberg<\/a><\/noindex>)<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"appendix\">Anhang<\/h3>\n<p><\/p>\n<ul>\n<li>Nach dem Schritt pruning kann man auch die Quantisierung anwenden (zum Beispiel mit TensorRT)<\/li>\n<li>TensorFlow bietet M\u00f6glichkeiten f\u00fcr <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/model_optimization\/guide\/pruning\/pruning_with_keras\">low_magnitude_pruning<\/a><\/noindex>. Es funktioniert.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">Repository<\/a><\/noindex> Ich m\u00f6chte mich weiterentwickeln und freue mich \u00fcber Hilfe.<\/li>\n<\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/482050\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0411\u0435\u0440\u0435\u0448\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 YOLOv3 \u0438 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0435\u0448\u044c. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c(mAp75) \u0431\u043e\u043b\u044c\u0448\u0435 0.95. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0438\u0437\u043a\u0430\u044f. \u0427\u0435\u0440\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Model Pruning \u2014 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Inference \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u043e\u0442\u043a\u0443\u0434\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a [&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":[702],"tags":[],"class_list":["post-54494","post","type-post","status-publish","format-standard","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0411\u0435\u0440\u0435\u0448\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 YOLOv3 \u0438 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0435\u0448\u044c. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c(mAp75) \u0431\u043e\u043b\u044c\u0448\u0435 0.95. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0438\u0437\u043a\u0430\u044f. \u0427\u0435\u0440\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Model Pruning \u2014 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Inference \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u043e\u0442\u043a\u0443\u0434\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a\" \/>\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\/de\/blog\/novosti-interneta\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\u0414\u0436\u0435\u0434\u0430\u0439\u0441\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u2014 pruning | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0411\u0435\u0440\u0435\u0448\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 YOLOv3 \u0438 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0435\u0448\u044c. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c(mAp75) \u0431\u043e\u043b\u044c\u0448\u0435 0.95. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0438\u0437\u043a\u0430\u044f. \u0427\u0435\u0440\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Model Pruning \u2014 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Inference \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u043e\u0442\u043a\u0443\u0434\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning\" \/>\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-12-26T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Jedi-Technik zur Reduzierung von Convolutional Networks \u2013 Pruning | ProHoster","description":"Vor dir steht erneut die Aufgabe der Objekterkennung. Priorit\u00e4t hat die Geschwindigkeit bei akzeptabler Genauigkeit. Du nimmst die Architektur YOLOv3 und trainierst sie weiter. Die Genauigkeit (mAp75) liegt \u00fcber 0,95. Aber die Ausf\u00fchrungsgeschwindigkeit ist immer noch niedrig. Verdammt. Heute umgehen wir die Quantisierung. Im weiteren Verlauf betrachten wir das Model Pruning \u2013 das Entfernen \u00fcberfl\u00fcssiger Teile des Netzwerks zur Beschleunigung der Inferenz ohne Verlust an Genauigkeit. Anschaulich \u2013 woher, wie viel und wie","canonical_url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\u0414\u0436\u0435\u0434\u0430\u0439\u0441\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u2014 pruning | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0411\u0435\u0440\u0435\u0448\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 YOLOv3 \u0438 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0435\u0448\u044c. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c(mAp75) \u0431\u043e\u043b\u044c\u0448\u0435 0.95. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0438\u0437\u043a\u0430\u044f. \u0427\u0435\u0440\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Model Pruning \u2014 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Inference \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u043e\u0442\u043a\u0443\u0434\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a","og:url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","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-12-26T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54494","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":"","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-24 11:34:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:29:04","updated":"2026-01-24 11:34:22"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/54494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=54494"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/54494\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=54494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=54494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=54494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}