gpt4 book ai didi

python - TensorFlow : Loss matrix function

转载 作者:行者123 更新时间:2023-11-30 22:13:25 25 4
gpt4 key购买 nike

我目前有一个 RNN,其中我的标签有两个类别。输出 [1, 0] 或 [0, 1]。我想实现一个损失矩阵,这样错误地猜测 [0, 1] 的 [1, 0] 的成本比猜测 [1, 0] 的 [0, 1] 的成本高 100 倍。所以我认为我的损失矩阵是 [[0, 1], [100, 0]]。

这可以用 tensorflow 实现吗?如果是这样,我应该使用什么成本函数?谢谢

最佳答案

一种选择是对不同的组合使用查找表。这将让您根据离散化预测对您使用的损失(例如交叉熵)进行加权(因为此查找操作是不可微分的)。

import tensorflow as tf

# This example is using eager execution, but the same code will work with graph
# building if you run it in a Session.
tf.enable_eager_execution()

penalties = tf.constant([
# Predicted 0
0., # Label 0
100., # Label 1
# Predicted 1
1., # Label 0
0. # Label 1
])

def compute_loss_weight(predicted, label):
sparse_predicted = tf.argmax(predicted, axis=-1)
sparse_label = tf.argmax(label, axis=-1)
offset = sparse_predicted * tf.shape(label, out_type=tf.int64)[-1] + sparse_label
return tf.gather(params=penalties, indices=offset)

print(compute_loss_weight(predicted=[1, 0], label=[0, 1])) # 100.
print(compute_loss_weight(predicted=[0, 1], label=[1, 0])) # 1.
# Also works on batches
print(compute_loss_weight(predicted=[[1, 0], [1, 0], [0, 1], [0, 1]],
label= [[0, 1], [1, 0], [0, 1], [1, 0]]))
# Prints [100. 0. 0. 1.]

关于python - TensorFlow : Loss matrix function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50783854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com