Deron Eriksson created SYSTEMML-1849: ----------------------------------------
Summary: Can't obtain scores from l2-svm-predict.dml using JMLC Key: SYSTEMML-1849 URL: https://issues.apache.org/jira/browse/SYSTEMML-1849 Project: SystemML Issue Type: Bug Components: Compiler, Runtime Reporter: Deron Eriksson Attempting to obtain the {{scores}} variable in {{l2-svm-predict.dml}} using JMLC gives: {code} Exception in thread "main" org.apache.sysml.api.DMLException: Non-existent output variable: scores at org.apache.sysml.api.jmlc.ResultVariables.getMatrixBlock(ResultVariables.java:88) at org.apache.sysml.api.jmlc.ResultVariables.getMatrix(ResultVariables.java:74) {code} This appears to be introduced by https://github.com/apache/systemml/commit/4b81d0dda6583f0ae96eaa7aa5832005ae5fa8a9 Example code: {code} public static void jmlcL2SVM() throws Exception { Connection conn = new Connection(); String dml = conn.readScript("scripts/algorithms/l2-svm.dml"); PreparedScript l2svm = conn.prepareScript(dml, new String[] { "X", "Y", "fmt", "Log" }, new String[] { "w", "debug_str" }, false); double[][] trainData = new double[150][3]; for (int i = 0; i < 150; i++) { int one = ThreadLocalRandom.current().nextInt(0, 101); int two = ThreadLocalRandom.current().nextInt(0, 101); int three = ThreadLocalRandom.current().nextInt(0, 101); double[] row = new double[] { one, two, three }; trainData[i] = row; } l2svm.setMatrix("X", trainData); log.debug(displayMatrix(trainData)); double[][] trainLabels = new double[150][1]; for (int i = 0; i < 150; i++) { int one = ThreadLocalRandom.current().nextInt(1, 3); double[] row = new double[] { one }; trainLabels[i] = row; } l2svm.setMatrix("Y", trainLabels); log.debug(displayMatrix(trainLabels)); l2svm.setScalar("fmt", "csv"); l2svm.setScalar("Log", "temp/l2-svm-log.csv"); ResultVariables l2svmResults = l2svm.executeScript(); double[][] model = l2svmResults.getMatrix("w"); log.debug("MODEL:"); log.debug(displayMatrix(model)); String debugString = l2svmResults.getString("debug_str"); log.debug("DEBUG STRING:"); log.debug(debugString); String s = conn.readScript("scripts/algorithms/l2-svm-predict.dml"); Map<String, String> m = new HashMap<String, String>(); m.put("$Y", "\"temp/haberman.test.labels.csv\""); m.put("$confusion", "\"temp/l2-svm-confusion.csv\""); PreparedScript l2svmPredict = conn.prepareScript(s, m, new String[] { "X", "y", "w", "fmt" }, new String[] { "scores", "confusion_mat" }, false); double[][] testData = new double[150][3]; for (int i = 0; i < 150; i++) { int one = ThreadLocalRandom.current().nextInt(0, 101); int two = ThreadLocalRandom.current().nextInt(0, 101); int three = ThreadLocalRandom.current().nextInt(0, 101); double[] row = new double[] { one, two, three }; testData[i] = row; } l2svmPredict.setMatrix("X", testData); double[][] testLabels = new double[150][1]; for (int i = 0; i < 150; i++) { int one = ThreadLocalRandom.current().nextInt(1, 3); double[] row = new double[] { one }; testLabels[i] = row; } l2svmPredict.setMatrix("y", testLabels); l2svmPredict.setMatrix("w", model); l2svmPredict.setScalar("fmt", "csv"); ResultVariables l2svmPredictResults = l2svmPredict.executeScript(); double[][] scores = l2svmPredictResults.getMatrix("scores"); log.debug("SCORES:"); log.debug(displayMatrix(scores)); double[][] confusionMatrix = l2svmPredictResults.getMatrix("confusion_mat"); log.debug("CONFUSION MATRIX:"); log.debug(displayMatrix(confusionMatrix)); conn.close(); } {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)