假設我有一個這樣的矩陣:
[[15,10,8],
[11,5,8],
[9,14,4]]
我需要撰寫一個函式,對于每一行,回傳最大值的索引,而不重復相同的列索引。
給定前面的矩陣,最好的解決方案如下:
[[0,0],
[1,2],
[2,1]]
這是因為這些索引給出的值的總和是 (15 8 14 = 37) 并且總和元素的索引不會在輸出張量中重復。
這在損失函式中是必需的,所以我只需要用 tensorflow 撰寫它。
謝謝
uj5u.com熱心網友回復:
這稱為分配問題。這可以作為一個 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 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469135.html
