0
concordance index(c-index)と同等の損失関数を使用してニューラルネットワークを最適化することを試しています。私が使用したい損失関数は、(リンクにおけるラテックス式)であり、Y「は予測とyのベクトルであるテンソルフロー損失関数でマルチインデックス合計を計算する
∑{i=0}^N ∑{j=i}^N \sigma ( (y_i - y_j)(y'_i - y'_j))
は、サイズNのバッチのラベルのベクトルであり、\シグマでありますシグモイド関数私はTensorFlowでこれを実装できるようにしたいと思いますが、2つのインデックスの合計を表現する方法を見つけることはできません。
私はTensorFlowとKerasプリミティブで表現することができますが、成功しなかった別の形式に方程式を再配置しようとしました。私はKerasを使用しているので、KerasまたはTensorFlow実装はどちらも使用可能です。
ザPythonコードである
from itertools import permutations, combinations
a = np.arange(4)
a = a*100
def loss_ci(y_true, y_pred):
summ = 0.
total=0
for i in range(len(y_true)):
for j in range(i+1,len(y_true)):
summ += 1/(1+np.exp(-(y_true[i]-y_true[j]) * (y_pred[i]-y_pred[j])))
total+=1
return (summ)/total
print("y_true\t\ty_pred\t\tc-index\tloss")
for c in permutations(a,3):
for d in combinations(a,3):
print(c, d, "\t{:.4f}".format(ci(c, d)), "\t{:.4f}".format(loss_ci(c, d)))
おかげで、これはシグモイドのfuctionを実装していません。私は損失関数のnumpyバージョンを含めるように質問を編集しました。 (合計で除算する必要はありませんが、損失がC指数とどのように等しくなるかを示しています) –
私の間違い..変更を加えました –
それはうまくいきました、ありがとう –