Piyo7 a publié Appeler l'API Java de TensorFlow depuis Scala il y a quelques jours. J'ai essayé de voir quel genre de code il proviendrait de JRuby.
example.rb
require 'pp'
require 'java'
require './libtensorflow-1.0.0-PREVIEW1.jar'
module TF
include_package 'org.tensorflow'
end
graph = TF::Graph.new
a = graph.opBuilder("Const", "a").
setAttr("dtype", TF::DataType::INT32).
setAttr("value", TF::Tensor.create([1, 2, 3].to_java(:int))).
build().
output(0)
b = graph.opBuilder("Const", "b").
setAttr("dtype", TF::DataType::INT32).
setAttr("value", TF::Tensor.create([4, 5, 6].to_java(:int))).
build().
output(0)
c = graph.opBuilder("Mul", "c").
addInput(a).
addInput(b).
build().
output(0)
session = TF::Session.new(graph)
out = Array.new(3).to_java(:int)
session.runner().fetch("c").run().get(0).copyTo(out)
pp out #=> int[4, 10, 18]@71623278
$ ruby -J-Djava.library.path=./jni example.rb
Si vous l'exécutez avec, vous obtiendrez certainement [4, 10, 18].
J'étais un peu accro au processus d'importation de org.tensorflow
import 'org.tensorflow.*'
Au lieu d'écrire, c'est devenu une méthode pour définir un espace de noms TF et include_package.
Une bibliothèque qui exécute TensorFlow de Ruby a été publiée en juin dernier
Semble être un classique.
En comparant le Sample Code attaché à cette bibliothèque avec l'exemple ci-dessus, example.rb est considérablement plus redondant. est.
S'il est logique de faire évoluer ce code, cela remplacerait simplement le module TF par un wrapper plus intelligent.
(1) Module [Metaprogramming] TF utilisant les informations de symbole côté Java (http://qiita.com/tags/%E3%83%A1%E3%82%BF%E3%83%97%E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9F% E3% 83% B3% E3% 82% B0).
(2) Keras Fournit une API plus abstraite (semblable à Ruby).
Il est possible que.
Keras sera intégré à TensorFlow avec Keras 2 (→ feuille de route printemps 2017: Keras 2, PR freeze, intégration TF), Java Il semble que les spécifications de l'API soient encore instables. Malheureusement, les deux (1) et (2) sont prématurés.
Recommended Posts