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

Reply via email to