La fière bibliothèque d'apprentissage automatique de Google, TensorFlow 1.0, a été publiée. Jetez un œil à ce qui a été mis à jour ... API Java !?
Experimental APIs for Java and Go
Le fait que l'API Java puisse être utilisée devrait pouvoir être appelée à partir du langage JVM Scala, je l'ai donc essayé immédiatement: elevé_hands:
tensorflow/tensorflow/java/README.md Téléchargez, décompressez et déployez simplement le JAR et les bibliothèques natives selon. Cela ressemble à ceci sur Mac OS X.
$ tree
.
├── build.sbt
├── jni
│ └── libtensorflow_jni.dylib
├── lib
│ └── libtensorflow-1.0.0-PREVIEW1.jar
└── src
└── main
└── scala
└── Main.scala
Il s'agit d'un code de test qui ne calcule que le produit élémentaire du vecteur A (1, 2, 3) et du vecteur B (4, 5, 6).
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(", "))
}
Graphique, Session / tensorflow / Session), Tensor semble ne pas libérer de ressources à moins que vous n'appeliez explicitement close ()
. , Soyez prudent lorsque vous écrivez un code décent.
$ sbt run -Djava.library.path=./jni
...
4, 10, 18
Oui, nous avons calculé le vecteur C (4, 10, 18).
En parlant d'apprentissage automatique, en particulier d'apprentissage en profondeur, la culture de Python est forte, et en tant que personne qui aime les langues à typage statique, j'étais un peu nerveuse, mais utiliser un langage que je connais de cette manière augmente ma tension: heart_eyes: Bien sûr, il existe de bonnes bibliothèques Java telles que Deeplearning4j, mais les derniers modèles d'apprentissage sont souvent implémentés dans TensorFlow ...
Tout d'abord, la difficulté de l'apprentissage automatique dépend en grande partie de la mise en forme des données de prétraitement, et je pense que le seuil sera abaissé si vous pouvez l'écrire avec un code. Il semble que seule l'API Java minimale soit encore préparée, mais j'espère qu'elle deviendra de plus en plus riche à l'avenir: joy :: joy :: joy:
build.sbt
name := "tensorflow-scala"
scalaVersion := "2.12.1"
Recommended Posts