我想计算两个pointcloud之间的Earth Mover的距离作为Tensorflow中的损失函数.
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.
但我可以使用该文件直接操作numpy数组:
>>python EMD.py
EMD
We got: 160.542759771
C example got 160.54277
Success
我想这意味着我不能直接操作Tensor,所以我该怎么办?