2017-02-20 20 views
2

Так что я играл с этим интересным применением tensorflow: TensorKartNaN результат при суммировании двух тензоров, которые по отдельности оба действительные числа

Полный исходный код здесь: https://github.com/kevinhughes27/TensorKart

Я получаю NaN приводит к моему вычислению потерь, и это полностью меня озадачило. Проблема заключается в этой строке кода:

loss = tf.reduce_mean(tf.square(tf.sub(model.y_, model.y))) + tf.add_n([tf.nn.l2_loss(v) for v in train_vars]) * L2NormConst 

Когда я оцениваю первую часть:

tf.reduce_mean(tf.square(tf.sub(model.y_, model.y))) 

Я получаю значения около 0,8 Когда я оцениваю вторую часть:

tf.add_n([tf.nn.l2_loss(v) for v in train_vars]) * L2NormConst 

Я получаю значения около 3.1

НО, когда я суммирую две части, я получаю NaN?!?!

Я проверил форму и типы, и они оба возвращаются, как: Tensor ("Форма: 0", форма = (0,), DTYPE = int32)

Вещи, которые я пытался: с помощью ТФ .reduce_sum вместо tf.add_n, отбрасывая их на tf.float32, суммируя их с tf.add ....

У кого-нибудь есть идеи?

ответ

1

Итак, после прохождения каждой операции, ведущей к вычислению значения потерь, оказывается, что в моих входных данных были значения NaN. Преобразование их в нуль разрешило проблему получения результата NaN в вычислении окончательной потери.

То, что я до сих пор не понял, является причиной того, что я получал ошибку только в том месте, где я суммирую две части значения потерь, но не при вычислении частей по отдельности.

Совершенно странно.

 Смежные вопросы

  • Нет связанных вопросов^_^