Skip to content

Tensor conversions and tensor generators #139

Open
@khatchad

Description

@khatchad

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().

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions