【发布时间】:2019-11-28 15:37:37
【问题描述】:
下面是我试图理解的代码。我的困惑是 basic_loss 是一个 !D 数组或具有 1 个元素的张量。所以 loss1 在执行 tf.reduce.sum 时也应该具有相同的值。类似地,loss2 也应该与 basic_loss 具有相同的值。但是当我尝试执行时,它们都没有相同的值。这可能是什么原因?
import tensorflow as tf
anchor = tf.random_uniform([1 , 128], dtype=tf.float32)
positive = tf.random_uniform([1 , 128], dtype=tf.float32)
negative = tf.random_uniform([1 , 128], dtype=tf.float32)
pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, positive)), axis=-1)
neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, negative)), axis=-1)
basic_loss = tf.add(tf.subtract(pos_dist, neg_dist), 0.3)
loss1 = tf.reduce_sum(basic_loss)
loss2 = tf.maximum(basic_loss, 0)
print(basic_loss.eval())
print(loss1.eval())
print(loss2.eval())
sess.close()
输出:[-1.5216954] -2.0545285 [0.72764665]
【问题讨论】: