[-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

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