我有这个适用于python的代码
X = numpy.loadtxt("compiledFeatures.csv", delimiter=",")
model = load_model("kerasnaive.h5")
predictions = model.predict(X)
print(predictions);
我试图在java中编写具有相同功能的代码,
我已经编写了这段代码,但它不起作用,任何人都知道我做错了什么,或者还有另一种更简单的方法吗?
代码将转到catch块,在调试代码期间,似乎从模型文件中获取的所有信息都为null
path = String.format("%s\\kerasnaive.h5", System.getProperty("user.dir"),
pAgents[i]);
try {
network = KerasModelImport.importKerasModelAndWeights(path, false);
}
catch (Exception e){
System.out.println("cannot build keras layers");
}
INDArray input = Nd4j.create(1);
input.add(featuresInput); //an NDarray that i got in the method
INDArray output = network[i].outputSingle(input);
似乎模型没有构建(网络仍为空) python的代码加载模型并且可以正常工作,
在java中我得到错误:“无法确定图层的输出数量:找不到output_dim或nb_filter字段。有关详细信息,请参阅http://deeplearning4j.org/model-import-keras。”
虽然在两个casses中使用相同的文件
谢谢, ORI
答案 0 :(得分:0)
您当前正在使用importKerasModelAndWeights
导入经过训练的keras模型。我不确定您如何训练模型,但是在Keras中有两种可用的模型:Sequential model
和使用功能性API的Model class
。您可以阅读更多here。
如果在创建网络时使用了Sequential model
,则需要使用importKerasSequentialModel
函数。 Keras Sequential models。