小编zhe*_* xu的帖子

使用 Earth Mover 的距离作为 Tensorflow 中的损失函数

我想计算两个点云之间的地球移动器距离作为 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
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到错误:

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.
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我猜这意味着我无法直接操作Tensor,那么我该怎么办?

python numpy tensorflow

5
推荐指数
1
解决办法
4204
查看次数

标签 统计

numpy ×1

python ×1

tensorflow ×1