I could get the extension to make predictions from the KMeans saved model I prepared. Please find the extension here <https://github.com/niruhan/siddhi-execution-streamingml/tree/master/component/src/main/java/org/wso2/extension/siddhi/execution/streamingml/tensorflow> and the test case here <https://github.com/niruhan/siddhi-execution-streamingml/blob/master/component/src/test/java/org/wso2/extension/siddhi/execution/streamingml/tensorflow/TensorFlowSPExtensionTest.java>
Regards, *Niruhan Viswarupan* Engineering Intern | WSO2 Phone: +94776468013 On Fri, Nov 10, 2017 at 10:42 AM, Niruhan Viswarupan <[email protected]> wrote: > [-Analytics-group, -engineering-group, + dev] > > The output tensor can be a single scalar value or a multidimensional > array. It totally *depends on the model* and how its output is configured. > > For example, > > 1. if we have a model for classification and its prediction is > configured to send a string of the class name then we will get a *scalar > (A Tensor of 0 dimension)* string tensor. > 2. If we have a clustering model it can output the coordinates of the > closest centroid as a tensor which can be a *vector (A tensor of 1 > dimension) *with any length (For example vector length will be 2 in > the case of Cartesian plane, 3 in the case of 3D coordinate system etc). > > *(Note:* The above examples have only a few values in output Tensors. But > it is possible for someone to build a TensorFlow model that sends out a > Tensor with thousands of dimensions and thousands of length per dimension.) > > *Terminology:* > eg. Consider a 3x4 *matrix (a tensor of 2 dimensions)* as below, > > 1 2 3 4 > 5 6 7 8 > 9 1 2 3 > This has 2 dimensions and length of 1st dimension is 3 and the 2nd > dimension is 4. > > Also *problems identified in sending out multidimensional arrays in the > output stream* are, > > 1. Its a *challenge to create primitive type multidimensional arrays* > (This is the type supported by Tensors copying method) whose *dimensions > are unknown at compile time* in Java (I welcome any suggestion as to > how this could be done) > 2. As pointed out by Tishan *other extensions of Siddhi are not > configured to handle arrays*. So cannot process the output arrays of > this extension further in Siddhi > > Considering the above issues we decided to flatten the Tensor and send all > the values in a tensor one by one in primitive type. *In most cases > output Tensor will have a small number of values*. > > Regards, > > *Niruhan Viswarupan* > Engineering Intern | WSO2 > Phone: +94776468013 <+94%2077%20646%208013> > > On Thu, Nov 9, 2017 at 11:41 PM, Sriskandarajah Suhothayan <[email protected]> > wrote: > >> Does Tensor always output multidimensional array or only for some cases? >> If it returns a multidimensional array what sort of processing the user >> should be doing to get sense out of it? >> >> My doubt is having a way to send multidimensional array out will solve >> the user's problem. >> >> Regards >> Suho >> >> On Thu, Nov 9, 2017 at 8:45 AM, Niruhan Viswarupan <[email protected]> >> wrote: >> >>> Hi, >>> >>> This is regarding supporting predictions from TensorFlow saved models >>> using stream processor. >>> >>> The *predictions (outputs) from a TensorFlow model in Java API will be >>> a Tensor >>> <https://www.tensorflow.org/api_docs/java/reference/org/tensorflow/Tensor> >>> object*. This can have any number of dimensions and any shape. This >>> means that *we will not know the shape of the output multidimensional >>> array in the compile time*. This will only come to light in the run >>> time when the user input model is loaded. I was stuck with creating >>> multidimensional arrays of run time specified shape. It is solvable for >>> object arrays since they can be recursively built. But the copyTo() >>> <https://www.tensorflow.org/api_docs/java/reference/org/tensorflow/Tensor.html#copyTo(U)> >>> method >>> of Tensor works only for primitive type arrays. >>> >>> So after a discussion with Tishan we *decided to flatten the >>> multidimensional Tensor* and output them as one-by-one primitive types >>> that Siddhi handles. For example a 2x3 matrix Tensor [ [1,2,3], [4,5,6] ] >>> will be output as 6 separate int into the event. >>> >>> Please find the *user story here >>> <https://docs.google.com/document/d/1aISBIpG5hzCXzeOh_vK3DSG_B63HT40B4xTZWCFREOM/edit#heading=h.wqd5v6f5j5hc>* >>> and >>> the preliminary *coding works here >>> <https://github.com/niruhan/siddhi-execution-streamingml/tree/master/component/src/main/java/org/wso2/extension/siddhi/execution/streamingml/tensorflow>* >>> . >>> >>> Regards, >>> >>> *Niruhan Viswarupan* >>> Engineering Intern | WSO2 >>> Phone: +94776468013 <077%20646%208013> >>> >> >> >> >> -- >> >> *S. Suhothayan* >> Associate Director / Architect >> *WSO2 Inc. *http://wso2.com >> * <http://wso2.com/>* >> lean . enterprise . middleware >> >> >> *cell: (+94) 779 756 757 <+94%2077%20975%206757> | blog: >> http://suhothayan.blogspot.com/ <http://suhothayan.blogspot.com/>twitter: >> http://twitter.com/suhothayan <http://twitter.com/suhothayan> | linked-in: >> http://lk.linkedin.com/in/suhothayan <http://lk.linkedin.com/in/suhothayan>* >> > >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
