的 方法1: 强>
似乎这是SOFTMAX激活的预期行为。这是来自 PredictGenderTest 例:
INDArray predicted = model.output(features); //System.out.println("output : " + predicted); if (predicted.getDouble(0) > predicted.getDouble(1)) gender.setText("Female"); else if (predicted.getDouble(0) < predicted.getDouble(1)) gender.setText("Male");
如果要评估模型,可能更容易使用此模式:
Evaluation eval = new Evaluation(numOutputs); while(testIter.hasNext()){ DataSet t = testIter.next(); INDArray features = t.getFeatureMatrix(); INDArray labels = t.getLabels(); INDArray predicted = network.output(features, false); eval.eval(labels, predicted); } System.out.println(eval.stats());
然后你得到一个人类可读的结果
的 方法2: 强>
我发现了另一种实现这一目标的方法,在某些情况下可能更为可取。
在数据上设置标签名称:
DataSet verifyData = iterator.next(); List<String> labelNames = new ArrayList<>(); labelNames.add("Label 1"); labelNames.add("Label 2"); verifyData.setLabelNames(labelNames);
而不是model.output,使用预测:
ArrayList<String> labels = (ArrayList<String>) model.predict(verifyData);