Как проверить, пуст ли тензор в Tensorflow - PullRequest
0 голосов
/ 25 мая 2018

У меня есть часть моего кода следующим образом:

class_label = tf.placeholder(tf.float32, [None], name="condition_checking")
row_index = tf.where(class_label > 0)

Я хочу проверить, когда row_index пуст, чтобы написать следующее

loss_f_G_filtered = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
    logits=y1_filterred, labels=y__filtered), name="filtered_reg")

if row_index == []:
  loss_f_G_filtered = tf.constant(0, tf.float32)

Однако я не знаю, какпроверьте, является ли row_index пустой тензор.

Ответы [ 3 ]

0 голосов
/ 26 мая 2018
    loss_f_G = 

tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y1_filterred, labels=y__filtered), name = "filtered_reg")
    idx0 = tf.shape(row_index)[0]
    loss_f_G_filtered = tf.cond(tf.cast(idx0 == 0, tf.bool), lambda: tf.constant(0, tf.float32), lambda:loss_f_G)

Проблема в том, что idx0 == 0 никогда не бывает истинным, даже если row_index = [].

enter image description here

0 голосов
/ 26 мая 2018
is_empty = tf.equal(tf.size(row_index), 0)
0 голосов
/ 26 мая 2018

Вы можете использовать tf.cond:

idx0 = tf.shape(row_index)[0]
loss_f_G_filtered = tf.cond(idx0 == 0,
                            lambda: tf.constant(0, tf.float32),
                            lambda: ...another function...)
...