tensorflow基础问题

a=(batch_size,)与b=(batch_size,1)在计算时有什么区别,当我在计算两个值a ,b两个值得欧氏距离时,该采用a的格式还是b的格式?


提问者:Assam
发帖时间:2018-6-7 17:15:26

就按一个1的事,你要觉得可能出问题就加上,有那么难嘛


ZMikkelsen,发表于 2018-6-8 09:55:14

a和b的维度不一样(a是一维,b是二维),显然计算时区别很大。

关于计算距离,严格来说,楼主没说明想要计算哪一维度的距离,应该是没法回答的。一般来讲,首先是不要混用两种不同维度。其次,楼主说了是batch_size,所以大胆假定楼主是想要一批中的每个样本分别独立计算距离,并且最后想要得到一阶张量。那么两种维度都是可以计算的:

  1. 一阶张量:tf.sqrt(tf.square(tf.subtract(a, a_)))
  2. 二阶张量:tf.sqrt(tf.reduce_sum(tf.square(tf.subtract(a, a_)), 1))

再往下说,计算距离的一个应用时比较预测结果和真实值之间的差距,而来源于神经网络的预测结果很可能是二维的(批次中的样本独立计算),也就是得到的了楼主所谓的b=(batch_size,1),这种情况下,一般自定义计算距离需要真实值输入也是二维的,并且用二维的方法计算距离。


yunhai_luo,发表于 2018-6-8 13:48:06

Assam:
b是经过网络的输出,a是原始标签。我想计算两者之间的欧氏距离的话,是应该用一阶张量吧?

yunhai_luo:
这个我不知道,只有你自己知道。我只能提两个问题供参考,第一,你需不需要a和b同阶。第二,你需要的结果是一个数、一个向量还是什么形状。

Assam:
嗯嗯,我在思考下,真是太感谢你了

yunhai_luo:
不客气。


Assam(提问者)& yunhai_luo(最佳答案提供者),发表于 2018-6-8 14:10:03

从格式上可以看出维度不同,其他的不能确定。


neverchange,发表于 2018-7-3 16:59:21

其实没什么区别,,就类似于reduce mean和reduce sum一样,,感觉能相互转化哈哈哈


ViolinSolo,发表于 2018-7-3 20:13:01

ab格式要统一


ves,发表于 2018-7-4 21:09:25

其实两个实质是一样的


kdongyi,发表于 2018-7-15 17:22:08