Как вы написали мне по почте, это может быть связано с этой проблемой TF о перехвате исключений при выполнении графа и с этим связанным вопросом SO . Однако я не совсем уверен, что это действительно актуально для вас. Этот вопрос TF и вопрос SO касались того, как динамически перехватить исключение, поэтому в основном реализуем try: ... except: ...
в графике TF.
Другие функции TF, которые вводят структуру управления:
tf.cond
- это ответ на ваш вопрос, как вы условно исполняете код. В зависимости от условия, то есть bool
скаляр. Но, может, это не ваш вопрос, а, скорее, как сформулировать условие?
Существует tf.check_numerics
, который проверяет тензоры на inf / nan и выдает исключение, если такой тензор найден.
Если вы хотите получить это как условие, вы можете использовать этот код:
is_finite = tf.reduce_all(tf.is_finite(x))
Если вы хотите вызвать исключение, если какое-либо условие не выполняется, вы можете выполнить:
check_op = tf.Assert(is_finite, ["Tensor had inf or nan values:", x])
Возможно, вы захотите использовать tf.control_dependencies
, чтобы убедиться, что эта операция check_op
выполнена.