Uploaded image for project: 'SystemDS'
  1. SystemDS
  2. SYSTEMDS-1849

Can't obtain scores from l2-svm-predict.dml using JMLC

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • None
    • Not Applicable
    • Compiler, Runtime
    • None

    Description

      Attempting to obtain the scores variable in l2-svm-predict.dml using JMLC gives:

      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)
      

      This appears to be introduced by https://github.com/apache/systemml/commit/4b81d0dda6583f0ae96eaa7aa5832005ae5fa8a9

      Example 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();
      	}
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            deron Jon Deron Eriksson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: