tf.get_static_value
| Просмотреть исходный код на GitHub |
Возвращает постоянное значение заданного тензора, если его можно эффективно вычислить.
tf.get_static_value(
tensor, partial=False
)
Эта функция пытается частично оценить заданный тензор и возвращает его значение в виде массива numpy, если это удается.
Пример использования:
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
Использование partial опции наиболее актуально при вызове get_static_value внутри tf.function. Установка ее в True вернёт результаты, но для значений, которые нельзя оценить, будут None. Например:
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`
Совместимость (V1): Если constant_value(tensor) возвращает результат, отличный от None, то уже не будет возможности передать другое значение для tensor. Это позволяет результату этой функции влиять на создаваемую график и позволяет выполнять оптимизацию статической формы.
| Аргументы | |
|---|---|
tensor | Тензор, подлежащий оценке. |
partial | Если True, возвращаемый массив numpy может содержать частично оцененные значения. Значения, которые невозможно оценить, будут None. |
| Возвращает | |
|---|---|
Массив numpy, содержащий постоянное значение данного tensor, или None, если его нельзя вычислить. |
| Исключения | |
|---|---|
TypeError | если тензор не является 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