FUJITSU Adventskalender 2019 Dies ist der Artikel am 23. Tag. Ist Java nicht die objektorientierteste untergeordnete Sprache? In der Vergangenheit schienen C ++ und Smalltalk an erster Stelle zu stehen, aber C ++, das unter Berücksichtigung der C-Kompatibilität entwickelt wurde, erzwingt keine objektorientierte Implementierung. Wenn es um Smalltalk ging, wusste ich keineswegs, dass es ihn gibt. .. .. : heat_smile: Ich erinnere mich, dass ich Java als repräsentative Sprache von "Entwicklungskonzept = objektorientiert, was es relativ einfach macht, Programme zu implementieren, die Wiederverwendbarkeit berücksichtigen" in einem früheren Buch gelesen habe, aber das ist nicht falsch. Ich denke. Wie Sie aus Übergang gängiger Programmiersprachen, 1965-2019 (Python-Perspektive) sehen können, auch in der Softwareentwicklung Es ist eine weit verbreitete Sprache. Übrigens hat es immer noch einen überwältigenden Anteil an der internen Softwareentwicklung! ?? Scheint zu halten. (Es gibt keine statistischen Daten nach populärer Theorie: Sweat_smile :) Ist es jedoch nicht eine echte objektorientierte Sprache wie Python in den letzten Jahren? Mit dem Aufkommen der Sprachen kann die Machtkarte in Zukunft neu geschrieben werden. .. .. : Schrei:
Die Einführung ist sehr lang geworden, aber in diesem Artikel geht es darum, Deep Learning in Java auszuprobieren.
Ein Freund, der mehr als dreimal wettbewerbsfähiges Programmieren mag, sagte, dass er früher in Java programmiert habe, aber kürzlich zu Rust gewechselt sei. Er wollte jede populäre Sprache ausprobieren. Wie Sie aus dem obigen Übergang beliebter Programmiersprachen ersehen können, scheint Java von anderen Sprachen vorangetrieben zu werden. .. .. Einige Leute drücken es als alte Sprache aus, deshalb wird es schrecklich behandelt. .. .. Um zu beweisen, dass das objektorientierte Kind immer noch im aktiven Dienst kämpfen kann, dachte ich, ich müsste genug tun, um das heutzutage beliebte tiefe Lernen durchzuziehen. Diesmal handelt es sich jedoch um eine Testversion, wie der Titel schon sagt. : dancer_tone :: dancer :: dancer_tone2 :: dancer_tone3 :: dancer_tone4 :: dancer_tone5:
The Last Java Samurai[1]
: yum: Übrigens, ich komme aus einem Nicht-Informationssystem, daher war ich als Student frustriert, Java zu lernen, und nachdem ich in das Unternehmen eingetreten war, lernte ich zum ersten Mal die Güte von Java.
Python hat einen überwältigenden Anteil an der Welt des maschinellen Lernens, einschließlich Deep Learning, und die meisten OSS-Opportunity-Learning-Bibliotheken sind ebenfalls in Python implementiert. Es ist jedoch seit einiger Zeit möglich, mithilfe des Deep Learning-Modells in Java zu lernen und daraus zu schließen. Es gab OSS [^ 4j]. Dieses Mal werde ich jedoch versuchen, das OSS "Deep Java Library (im Folgenden: DJL) [^ djl]" zu verwenden, das am 3. Dezember 2019 neu veröffentlicht wurde.
Der Artikel ist lang geworden, aber es ist das Hauptthema. Derzeit können Sie sich nur auf Offizielle Website und Referenzartikel verlassen. : schreien ::: Geist:
In Referenzartikel wurde die Umgebung mit der Methode unter Verwendung von Gradle auf AWS erstellt. Dieses Mal möchte ich die Methode zur Ausführung des Containers mit Docker + Jupyter Notebook in der lokalen Umgebung übernehmen. Jupyter Notebook hat das Image eines Visualisierungstools für Python, wurde jedoch in letzter Zeit immer praktischer, da es mehrere Sprachen unterstützt.
macOS Mojave 10.14.6(CPU:Corei5-8210Y 1.6GHz, DRAM:16GB)[^nogpu] Docker 19.03.5
Klonen Sie das Repository von GitHub.
git clone https://github.com/awslabs/djl.git
cd djl/jupyter/
docker container run -itd -p 127.0.0.1:8888:8888 -v $PWD:/home/jupyter deepjavalibrary/jupyter
Sie können die Docker-Datei bearbeiten, um das Image zu erstellen. Diesmal wurde jedoch mit den Standardeinstellungen begonnen.
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03791a7b1641 deepjavalibrary/jupyter "jupyter notebook --…" 4 minutes ago Up 4 minutes 127.0.0.1:8888->8888/tcp suspicious_brattain
Wenn Sie auf "http: // localhost: 8888" zugreifen und die folgende Seite angezeigt wird, ist dies erfolgreich.
Wenn Sie genau hinschauen, werden die Tutorials bereits als jedes Notizbuch gespeichert. Ich gab der Bequemlichkeit von Jupyter Notebook nach und prahlte damit, dass ich es in Java tun würde. .. .. : Schluchzen:
Starten Sie train_your_first_model.ipynb
. Dies ist ein Beispiel für die handschriftliche Zeichenerkennung (MNIST) mit MLP. Um das Training auszuführen, drücken Sie einfach Shit + Enter, um die Befehle in der Zelle der Reihe nach auszuführen. Das ist sehr einfach. Ich war zuerst überrascht, dass ich die Hauptfunktion oder Klasse nicht schreiben musste.
Die folgende Meldung wurde beim Speichern des Modells ausgegeben. Die korrekte Antwortrate beträgt ungefähr 97%, dies ist jedoch nur ein numerischer Wert, der auf den Bewertungsdaten zum Zeitpunkt des Lernens basiert, und die korrekte Antwortrate basierend auf den Testdaten wird dieses Mal nicht gemessen. .. .. .. : stick_out_tongue_closed_eyes:
Model (
Name: mlp
Model location: /home/jupyter/build/mlp
Data Type: float32
Accuracy: 0.96991664
Epoch: 2
)
Dieses Mal werde ich ein Beispiel für die Objekterkennung ausführen. Starten Sie object_detection_with_model_zoo.ipynb
. Ich habe Model Zoo im obigen Referenzartikel ausprobiert, also dachte ich, ich würde ein anderes Beispiel ausprobieren, aber ich kann die detaillierte Verwendung der Bibliothek immer noch verstehen. Dieses Mal ist das trainierte Modell ([SSD: Single Shot MultiBox Detector](https: // qiita)) nicht verfügbar, da die Yahari-GPU-Umgebung für das Lernen unverzichtbar ist (das Erlernen von MLP auf der CPU dauert einige Zeit ...). Ich habe versucht, Objekte (Inferenz) von .com / YutoHagiwara / items / 4b66442ff1e09936f1d0)) zu erkennen.
Versuchen Sie die Objekterkennung mit dem Bild unten. Dies ist ein Bild von einem Hund, einem Fahrrad und einem Auto.
Das Ausführungsergebnis ist unten dargestellt. Sie können Objekte (Hunde, Fahrräder, Autos) richtig erkennen.
Das Inferenzergebnis (numerischer Wert) ist unten gezeigt. Sie können sehen, dass jedes Objekt mit hoher Genauigkeit erkannt wird.
[
class: "car", probability: 0.99991, bounds: [x=0.612, y=0.137, width=0.293, height=0.160]
class: "bicycle", probability: 0.95365, bounds: [x=0.162, y=0.207, width=0.594, height=0.590]
class: "dog", probability: 0.93471, bounds: [x=0.168, y=0.350, width=0.274, height=0.594]
]
Ich habe JDL ausprobiert, das Deep Learning in Java ausführen kann. Es scheint, dass es unter AWS ausgeführt werden soll, aber es funktionierte auch mit Docker in der lokalen Umgebung ohne Probleme. Diesmal war es eine Testausgabe, aber ich möchte mit der Untersuchung fortfahren und in Zukunft etwas Fortgeschritteneres ausprobieren. Schließlich werden die zukünftigen Probleme unten beschrieben.
Dies ist die Testversion von Deep Learning mit einem objektorientierten Schüler. Ich werde mein Bestes tun, um im nächsten Jahr weitere Artikel zu veröffentlichen.
[^ 4j]: Deeplearning4j. Als japanisches Buch "[Deep Learning Java-Programmiertheorie und Implementierung von Deep Learning (von Yusuke Negago; Impress; 2016)](https://www.amazon.co.jp/Deep-Learning-Java85-impress/ dp / 4844381288) ”wurde veröffentlicht. [^ djl]: Es scheint, dass es für die Verwendung unter AWS entwickelt wurde. ([Referenzinformationen](https://aws.amazon.com/jp/about-aws/whats-new/2019/12/introducing-deep-java-library-develop-and-deploy-machine-learning-models- in-java /)))
[^ nogpu]: Da unser Ziel diesmal darin besteht, DJL zu testen, werden wir es auf der CPU ausführen, nicht in der Umgebung, in der GPU + CUDA ausgeführt wird. Daher beschränkt sich diese Überprüfung auf das Testen des Multi-Layer-Perceptron-Trainings und der Inferenz unter Verwendung des trainierten Modells des Deep Learning. Ich werde die Operation auf der GPU zu einem späteren Zeitpunkt versuchen.
https://blog.heroku.com/samurai-duke-and-the-legend-of-openjdk ↩︎
Recommended Posts