systemml-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthias Boehm <mboe...@googlemail.com>
Subject Re: JMLC and l2-svm.dml
Date Fri, 25 Aug 2017 19:06:51 GMT
thanks for reaching out - let us quickly go through these issues to
demystify them:

1) Matrix text formats: Apart from binary representations, we support the
following text matrix formats: "mm" (matrix market), "text" (like matrix
market but without the meta data header), and "csv". The sparse "text"
format is our default. You had a csv representation but (without specifying
the format) you tried to read it as "text" which failed on parsing the
first column as row index. You can use something like that

conn.convertToDoubleMatrix(conn.readScript(model), rows, cols, "csv")

2) Parameter binding: Furthermore, note that matrix inputs (and any other
inputs) should be bound to the left-hand-side variable name. So please
change it as follows

conn.prepareScript(conn.readScript(dml), new String[] {"w", "X"}, new
String[] {"predicted_y"},

3) Model reuse: In order to ensure low-latency scoring even for relatively
large models, you might want to mark your model as reused input. You can do
that as follows while setting up your prepared statement. This converts the
model just once and reuses the internal representation over multiple
invocations of executeScript.

pstmt.setMatrix("w", wData, true);


Regards,
Matthias

On Fri, Aug 25, 2017 at 9:48 AM, Federico Wachs <
federico.wachs@sqlstream.com> wrote:

> Nevermind. I actually found out that I could change the output to write to
> the model file from csv to text which actually writes the matrix.
>
> Thanks,
>
> On Fri, Aug 25, 2017 at 11:02 AM Federico Wachs <
> federico.wachs@sqlstream.com> wrote:
>
> > Hi all,
> >
> > I've been able to follow the steps showed here
> > <http://apache.github.io/systemml/standalone-guide#
> training-and-testing-the-model> and
> > I want to use the created model from JMLC.
> >
> > But when I try to load the model like this:
> >
> >
> >
> >
> >
> >
> > *String dml =
> > "/home/fwachs/work/systemml/scripts/algorithms/l2-svm-
> predict.dml";String
> > model = "/home/fwachs/Downloads/l2-svm-model.csv";Connection conn = new
> > Connection();*
> >
> >
> > *PreparedScript pstmt = conn.prepareScript(conn.readScript(dml), new
> > String[] { "model", "X" }, new String[] { "predicted_y" },
> > false);double[][] W = conn.convertToDoubleMatrix(conn.readScript(model),
> 1,
> > 1);System.out.println(W);*
> >
> > I get the following error:
> >
> > 17/08/25 07:01:02 WARN rewrite.RewriteRemovePersistentReadWrite:
> > Non-registered persistent read of variable 'w' (line 44).
> > Exception in thread "main" java.io.IOException: Matrix cell [0,0] out of
> > overall matrix range [1:1,1:1].
> > at
> > org.apache.sysml.runtime.io.ReaderTextCell.
> readRawTextCellMatrixFromInputStream(ReaderTextCell.java:236)
> > at
> > org.apache.sysml.runtime.io.ReaderTextCell.readMatrixFromInputStream(
> ReaderTextCell.java:90)
> > at
> > org.apache.sysml.api.jmlc.Connection.convertToDoubleMatrix(
> Connection.java:413)
> > at
> > org.apache.sysml.api.jmlc.Connection.convertToDoubleMatrix(
> Connection.java:382)
> > at
> > org.apache.sysml.api.jmlc.Connection.convertToDoubleMatrix(
> Connection.java:368)
> > at com.sqlstream.plugin.systemml.SystemmlUdx.main(SystemmlUdx.java:65)
> > Caused by: java.lang.NumberFormatException: For input string:
> > "-2.0851945931025258"
> >
> > It seems the csv generated is not a matrix at all, since it contains the
> > following content:
> >
> > -2.0851945931025258
> > 6.006153060967643
> > 3.094544228625507
> > -0.43162666659496396
> > 1.0
> > 0
> > 0
> > 4.0
> >
> >
> > Any ideas? I am so stuck on this...
> >
> > Thanks,
> > --
> > Federico Wachs | sqlstream | +54 911 5748 5048
> >
> --
> Federico Wachs | sqlstream | +54 911 5748 5048
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message