#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))
Если бы кто-нибудь мог объяснить это неожиданное поведение, я был бы очень признателен. Спасибо!