Функция активации tf.math.pow(x, 0,5), приводящая к потерям NaN

#python #tensorflow #keras #tf.keras #activation-function

Вопрос:

Я пытаюсь использовать пользовательскую функцию активации квадратного корня для моей последовательной модели Keras (специально для набора данных MNIST). Когда я использую tf.math.sqrt(x) , обучение проходит гладко, и модель довольно точная. Однако, когда я пытаюсь использовать tf.math.pow(x, 0.5) , модель не обучается, и потери идут на NaN.

Я действительно не уверен, почему это происходит, потому что я бы подумал, что две альтернативы идентичны.

Функция квадратного корня

 def tfsqrt(x):
    cond = tf.greater_equal(x, 0)
    return tf.where(cond, tf.math.sqrt(x), -tf.math.sqrt(-x))
 

Функция питания

 def pwsqrt(x):
  cond = tf.greater_equal(x, 0)
  return tf.where(cond, tf.math.pow(x, 0.5), -tf.math.pow(-x, 0.5))
 

Если бы кто-нибудь мог объяснить это неожиданное поведение, я был бы очень признателен. Спасибо!