我看到SavedModelBundle.load
没有从HDFS中读取。
我正在执行以下操作,以Byte array
的格式从HDFS读取文件并将其作为图形导入。
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)
我的问题是:
SavedModelBundle.load
等效的Java?.pb
文件读取为byte array
并正确导入为张量流图?注意:如果我使用SavedModelBundle.load(path)
函数从本地文件系统中读取模型目录,则上述所有方法都可以正常工作。从本地,我无法正确读取字节数组并将其转换为图形。但是,读取bundle
可以正常工作并提供正确的输出。