Я вижу, что 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)
Мои вопросы:
- Существует ли Java-эквивалент
SavedModelBundle.load
для HDFS? - Какая альтернатива?Как я могу прочитать
.pb
файл как byte array
и правильно импортировать как график тензорного потока?
Примечание: все вышеперечисленное работает нормально, если я читаю каталог модели из локальной файловой системы, используя функцию SavedModelBundle.load(path)
,Из локального я не могу правильно прочитать байтовый массив и преобразовать в граф.Однако чтение bundle
работает нормально и дает правильные результаты.