tf.experimental.Optional
Представляет значение, которое может или не может быть присутствующим.
Класс tf.experimental.Optional может представлять результат операции, которая может завершиться неудачей в виде значения, вместо того, чтобы генерировать исключение и останавливать выполнение. Например, tf.data.Iterator.get_next_as_optional() возвращает tf.experimental.Optional, который либо содержит следующий элемент итератора, если он существует, либо пустое значение, указывающее на то, что конец последовательности достигнут.
tf.experimental.Optional может использоваться только со значениями, которые могут быть преобразованы в tf.Tensor или tf.CompositeTensor.
Можно создать tf.experimental.Optional из значения, используя метод from_value():
optional = tf.experimental.Optional.from_value(42) print(optional.has_value()) tf.Tensor(True, shape=(), dtype=bool) print(optional.get_value()) tf.Tensor(42, shape=(), dtype=int32)
или без значения, используя метод empty():
optional = tf.experimental.Optional.empty( tf.TensorSpec(shape=(), dtype=tf.int32, name=None)) print(optional.has_value()) tf.Tensor(False, shape=(), dtype=bool)
| Атрибуты | |
|---|---|
element_spec | Спецификация типа элемента этого опционального значения. optional = tf.experimental.Optional.from_value(42) print(optional.element_spec) tf.TensorSpec(shape=(), dtype=tf.int32, name=None) |
Методы
empty
@staticmethod
empty(
element_spec
)
Возвращает Optional без значения.
Примечание: Этот метод принимает аргумент, определяющий структуру значения, которое содержалось бы в возвращаемом Optional в случае наличия значения.
optional = tf.experimental.Optional.empty( tf.TensorSpec(shape=(), dtype=tf.int32, name=None)) print(optional.has_value()) tf.Tensor(False, shape=(), dtype=bool)
| Аргументы | |
|---|---|
element_spec | Вложенная структура объектов tf.TypeSpec, соответствующая структуре элемента этого опционального значения. |
| Возвращаемое значение | |
|---|---|
tf.experimental.Optional без значения. |
from_value
@staticmethod
from_value(
value
)
Возвращает tf.experimental.Optional, который оборачивает заданное значение.
optional = tf.experimental.Optional.from_value(42) print(optional.has_value()) tf.Tensor(True, shape=(), dtype=bool) print(optional.get_value()) tf.Tensor(42, shape=(), dtype=int32)
| Аргументы | |
|---|---|
value | Значение для обертывания. Значение должно быть преобразуемо в tf.Tensor или tf.CompositeTensor. |
| Возвращаемое значение | |
|---|---|
tf.experimental.Optional, который оборачивает value. |
get_value
@abc.abstractmethod
get_value(
name=None
)
Возвращает значение, обернутое этим опциональным значением.
Если у этого опционального значения нет значения (т.е. self.has_value() возвращает False), эта операция сгенерирует исключение tf.errors.InvalidArgumentError во время выполнения.
optional = tf.experimental.Optional.from_value(42) print(optional.get_value()) tf.Tensor(42, shape=(), dtype=int32)
| Аргументы | |
|---|---|
name | (Необязательно.) Имя создаваемой операции. |
| Возвращаемое значение | |
|---|---|
| Обернутое значение. |
has_value
@abc.abstractmethod
has_value(
name=None
)
Возвращает тензор, равный True если у этого опционального значения есть значение.
optional = tf.experimental.Optional.from_value(42) print(optional.has_value()) tf.Tensor(True, shape=(), dtype=bool)
| Аргументы | |
|---|---|
name | (Необязательно.) Имя создаваемой операции. |
| Возвращаемое значение | |
|---|---|
Скалярный tf.Tensor типа tf.bool. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/experimental/Optional