tensorflow / 2.9.1 / get_static_value.html /

tf.get_static_value

Returns the constant value of the given tensor, if efficiently calculable.

This function attempts to partially evaluate the given tensor, and returns its value as a numpy ndarray if this succeeds.

Example usage:

a = tf.constant(10)
tf.get_static_value(a)
10
b = tf.constant(20)
tf.get_static_value(tf.add(a, b))
30
# `tf.Variable` is not supported.
c = tf.Variable(30)
print(tf.get_static_value(c))
None

Using partial option is most relevant when calling get_static_value inside a tf.function. Setting it to True will return the results but for the values that cannot be evaluated will be None. For example:

class Foo(object):
  def __init__(self):
    self.a = tf.Variable(1)
    self.b = tf.constant(2)

  @tf.function
  def bar(self, partial):
    packed = tf.raw_ops.Pack(values=[self.a, self.b])
    static_val = tf.get_static_value(packed, partial=partial)
    tf.print(static_val)

f = Foo()
f.bar(partial=True)  # `array([None, array(2, dtype=int32)], dtype=object)`
f.bar(partial=False)  # `None`

Compatibility(V1): If constant_value(tensor) returns a non-None result, it will no longer be possible to feed a different value for tensor. This allows the result of this function to influence the graph that is constructed, and permits static shape optimizations.

Args
tensor The Tensor to be evaluated.
partial If True, the returned numpy array is allowed to have partially evaluated values. Values that can't be evaluated will be None.
Returns
A numpy ndarray containing the constant value of the given tensor, or None if it cannot be calculated.
Raises
TypeError if tensor is not an ops.Tensor.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/get_static_value