在张量中找到使值和最大化的枢轴
Find pivots in tensor that maximize sum of values
假设我有一个这样的矩阵:
[[15,10,8],
[11,5,8],
[9,14,4]]
我需要编写一个函数,对于每一行,returns 最大值的索引,而不重复相同的列索引。
鉴于前面的矩阵,最佳解决方案如下:
[[0,0],
[1,2],
[2,1]]
这是因为这些索引给出的值的总和是 (15+8+14 = 37),并且求和元素的索引不会在输出张量中重复。
这在损失函数中需要,所以我只需要在tensorflow中编写它。
谢谢
这称为分配问题。这可以作为一个 LP(线性规划)问题来解决:
max sum((i,j), a[i,j]*x[i,j])
subject to
sum(j, x[i,j]) = 1 ∀i
sum(i, x[i,j]) = 1 ∀j
x[i,j] ∈ [0,1]
这可以用任何 LP 解算器解决。
分配问题也有专门的算法。参见例如:
https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.linear_sum_assignment.html.
假设我有一个这样的矩阵:
[[15,10,8],
[11,5,8],
[9,14,4]]
我需要编写一个函数,对于每一行,returns 最大值的索引,而不重复相同的列索引。
鉴于前面的矩阵,最佳解决方案如下:
[[0,0],
[1,2],
[2,1]]
这是因为这些索引给出的值的总和是 (15+8+14 = 37),并且求和元素的索引不会在输出张量中重复。
这在损失函数中需要,所以我只需要在tensorflow中编写它。
谢谢
这称为分配问题。这可以作为一个 LP(线性规划)问题来解决:
max sum((i,j), a[i,j]*x[i,j])
subject to
sum(j, x[i,j]) = 1 ∀i
sum(i, x[i,j]) = 1 ∀j
x[i,j] ∈ [0,1]
这可以用任何 LP 解算器解决。
分配问题也有专门的算法。参见例如: https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.linear_sum_assignment.html.