wala/ML

Tensor conversions and tensor generators

Aperta

#139 aperta il 1 feb 2024

 (0 commenti) (0 reazioni) (0 assegnatari)Java (17 fork)auto 404
buggood first issuesummaries

Metriche repository

Star
 (27 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

There are situations where a TF API, e.g., tf.nn.relu(), can "generate" a tensor and have one just "pass through." In the summary representation, there isn't a way to express this, and it's dependent on the type of argument passed to the API.

Consider the following example based on the one at https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/nn/relu:

import tensorflow as tf
from tensorflow.python.framework.ops import EagerTensor

a = [-2., 0., 3.]
assert(type(a) == list)

b = tf.nn.relu(a)
assert(type(b) == EagerTensor)

In this case, the API is seemingly converting the given list to a tensor. Such API are typically represented as tensor generators in Ariadne (i.e., the call the sentinel read_data()). But, in another example with the same API, it can accept a tensor without conversion:

import tensorflow as tf
from tensorflow.python.framework.ops import EagerTensor

a = tf.constant([-2., 0., 3.])
assert(type(a) == EagerTensor)

b = tf.nn.relu(a)
assert(type(b) == EagerTensor)

In this case, the API is a "pass through" API; it doesn't create a new tensor but rather modifies an existing one.

My feeling is that such API can't be solely represented in the summaries. I believe that there are other API like this, e.g., reshape().

Guida contributor