wala/ML

Tensor conversions and tensor generators

開放

#139 建立於 2024年2月1日

 (0 則留言) (0 個反應) (0 位負責人)Java (17 個分叉)auto 404
buggood first issuesummaries

倉庫指標

星標
 (27 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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

貢獻者指南