Java - чтение модели Tensorflow (файл pb) из HDFS - PullRequest
0 голосов
/ 10 октября 2018

Я вижу, что SavedModelBundle.load не читает из HDFS.Я делаю следующее, чтобы прочитать файл из HDFS как Byte array и импортировать его в виде графика.

hdfs = FileSystem.get(new URI(configuration.get("fs.defaultFS")), configuration);
    if (hdfs.exists(location)) {
        FSDataInputStream hdfsInputStream = hdfs.open(location);
        int length = (int) hdfs.getFileStatus(location).getLen();
        byte[] model = new byte[hdfsInputStream.available()];
        hdfsInputStream.read(model);

        hdfsInputStream.close();
        final Graph g = new Graph();
        g.importGraphDef(model);
        Session session = new Session(g);
}

Я также пытался с hdfsInputStream.readfully(model).Это выдает следующую ошибку:

java.lang.IllegalArgumentException: Invalid GraphDef
at org.tensorflow.Graph.importGraphDef(Native Method)
at org.tensorflow.Graph.importGraphDef(Graph.java:130)
at org.tensorflow.Graph.importGraphDef(Graph.java:114)

Мои вопросы:

  1. Существует ли Java-эквивалент SavedModelBundle.load для HDFS?
  2. Какая альтернатива?Как я могу прочитать .pb файл как byte array и правильно импортировать как график тензорного потока?

Примечание: все вышеперечисленное работает нормально, если я читаю каталог модели из локальной файловой системы, используя функцию SavedModelBundle.load(path),Из локального я не могу правильно прочитать байтовый массив и преобразовать в граф.Однако чтение bundle работает нормально и дает правильные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...