【发布时间】:2017-11-26 16:22:14
【问题描述】:
我想在 Tensorflow 中计算两个点云之间的 Earth Mover 距离作为损失函数。
pointclouds1 = tf.placeholder(tf.float32, shape=(batch_size, num_point, 3))
pointclouds2 = tf.placeholder(tf.float32, shape=(batch_size, num_point, 3))
//'3' means xyz coordinate
def get_loss(pointclouds1, pointclouds2):
loss = EMD.getEMD(pointclouds1,pointclouds2)
return loss
不幸的是,我得到了错误:
File "F:\pointclouds\utils\EMD.py", line 71, in groundDistance
return np.linalg.norm(x1 - x2, norm)
File "C:\Users\xu\Anaconda3\lib\site-packages\numpy\linalg\linalg.py", line 2257, in norm
raise ValueError("Improper number of dimensions to norm.")
ValueError: Improper number of dimensions to norm.
EMD.py 来自https://github.com/chalmersgit/EMD/blob/master/EMD.py
但是我可以直接使用文件来操作numpy数组:
>>python EMD.py
EMD
We got: 160.542759771
C example got 160.54277
Success
我猜这意味着我不能直接操作Tensor,那我该怎么办?
【问题讨论】:
标签: python numpy tensorflow