Googles stolze Bibliothek für maschinelles Lernen, TensorFlow 1.0, wurde veröffentlicht. Werfen Sie einen Blick auf das, was aktualisiert wurde ... Java API!?
Experimental APIs for Java and Go
Die Tatsache, dass die Java-API verwendet werden kann, sollte in der JVM-Sprache Scala aufgerufen werden können, daher habe ich es sofort versucht: raise_hands:
tensorflow/tensorflow/java/README.md Laden Sie einfach die JAR- und native Bibliotheken herunter, entpacken Sie sie und stellen Sie sie entsprechend bereit. Unter Mac OS X sieht es so aus.
$ tree
.
├── build.sbt
├── jni
│ └── libtensorflow_jni.dylib
├── lib
│ └── libtensorflow-1.0.0-PREVIEW1.jar
└── src
└── main
└── scala
└── Main.scala
Dies ist ein Testcode, der nur das Elementprodukt von Vektor A (1, 2, 3) und Vektor B (4, 5, 6) berechnet.
src/main/scala/Main.scala
import org.tensorflow._
object Main extends App {
val graph = new Graph()
val a = graph.opBuilder("Const", "a").
setAttr("dtype", DataType.INT32).
setAttr("value", Tensor.create(Array(1, 2, 3))).
build().
output(0)
val b = graph.opBuilder("Const", "b").
setAttr("dtype", DataType.INT32).
setAttr("value", Tensor.create(Array(4, 5, 6))).
build().
output(0)
val c = graph.opBuilder("Mul", "c").
addInput(a).
addInput(b).
build().
output(0)
val session = new Session(graph)
val out = new Array[Int](3)
session.runner().fetch("c").run().get(0).copyTo(out)
println(out.mkString(", "))
}
Grafik, Sitzung / tensorflow / Session), Tensor scheint keine Ressourcen freizugeben, es sei denn, Sie rufen ausdrücklich "close ()" auf. Seien Sie vorsichtig, wenn Sie anständigen Code schreiben.
$ sbt run -Djava.library.path=./jni
...
4, 10, 18
Ja, wir haben den Vektor C (4, 10, 18) berechnet.
Apropos maschinelles Lernen, insbesondere Deep Learning, die Kultur von Python ist stark, und als Person, die statisch typisierte Sprachen mag, war ich etwas nervös, aber die Verwendung einer Sprache, die ich auf diese Weise kenne, erhöht meine Spannung: Herz Augen: Natürlich gibt es gute Java-Bibliotheken wie Deeplearning4j, aber die neuesten Lernmodelle werden häufig in TensorFlow implementiert ...
Erstens hängt die Schwierigkeit des maschinellen Lernens weitgehend von der Datenverarbeitung vor der Verarbeitung ab, und ich bin der Meinung, dass der Schwellenwert gesenkt wird, wenn Sie ihn mit einem Code schreiben können. Es scheint, dass nur die minimale Java-API vorbereitet ist, aber ich hoffe, dass sie in Zukunft immer reicher wird: joy :: joy :: joy:
build.sbt
name := "tensorflow-scala"
scalaVersion := "2.12.1"
Recommended Posts