Retval [0] не имеет значения: tf.cond (условие, нетто, нетто2) - PullRequest
0 голосов
/ 26 июня 2019

Я пытался использовать tf.cond() для создания 2 разных графиков в зависимости от условия.На обоих графиках мы хотим иметь потерю регуляризации веса и поэтому используем tf.losses.get_regularization_loss().Вот псевдокод нашего проекта

 def net_1(x,y):
  statement 1 (has trainable params)
  statement 2 (has trainable params)
  return

def net_2(x,y):
 statement 1 (has trainable params)
 statement 2 (has trainable params)
 statement 3 (has trainable params)
 return
step = tf.get_or_create_global_step()


tf.cond(tf.greater(step, 100), net_1, net_2)
loss = 0.0
loss += tf.losses.get_regularization_loss()

Если мы сохраняем tf.losses.get_regularization_loss(), мы получаем ошибку:

Retval [0] не делаетимеют значение

В противном случае ошибки не возникает.

Нужно ли соблюдать особую осторожность с tf.cond(), если мы хотим наложить tf.losses.get_regularization_loss().

1 Ответ

0 голосов
/ 26 июня 2019

Ваш псевдокод довольно неясен, однако, tf.cond ожидает тензоров в качестве параметров, из того, что вы написали, вы предоставляете ему функции .Если ваши функции net_1 и net_2 возвращают тензоры (что они, очевидно, должны), используйте выходной тензор в вызове tf.cond, например, следующим образом:

tf.cond(tf.greater(step, 100), net_1(x, y), net_2(x, y))
...