Piyo7 hat vor einigen Tagen TensorFlows Java-API von Scala aufrufen veröffentlicht. Ich habe versucht zu sehen, welche Art von Code es von JRuby sein würde.
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
Wenn Sie es mit ausführen, erhalten Sie mit Sicherheit [4, 10, 18].
Ich war ein wenig süchtig nach dem Import von org.tensorflow
import 'org.tensorflow.*'
Anstatt zu schreiben, wurde es zu einer Methode, einen Namespace TF und include_package zu definieren.
Eine Bibliothek, die TensorFlow von Ruby aus ausführt, wurde im vergangenen Juni veröffentlicht
Scheint ein Klassiker zu sein.
Der Vergleich des an diese Bibliothek angehängten Beispielcodes mit dem obigen Beispiel.rb, example.rb ist erheblich redundanter. ist.
Wenn es sinnvoll ist, diesen Code weiterzuentwickeln, wird lediglich das Modul TF durch einen intelligenteren Wrapper ersetzt.
(1) [Metaprogramming] -Modul TF unter Verwendung von Symbolinformationen auf der Java-Seite (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 Bietet eine abstraktere (Ruby-ähnliche) API.
Es ist möglich, dass.
Keras wird mit Keras 2 in TensorFlow integriert (→ Roadmap für Frühjahr 2017: Keras 2, PR-Freeze, TF-Integration), Java Es scheint, dass die API-Spezifikationen immer noch instabil sind. Leider sind sowohl (1) als auch (2) verfrüht.
Recommended Posts