我现在试图在不平衡的数据集上使用tf.losses.sigmoid_cross_entropy。但是,我对参数权重有点困惑。以下是文件中的评论:
权重:可选的张量,其等级为0,或与标签的等级相同,并且必须可向标签广播(即所有尺寸必须为1,或与相应的损失维相同)。
我知道在tf.losses.softmax_cross_entropy中,参数权重可以是一个秩1的张量,每个样本都有权。为什么tf.losses.sigmoid_cross_entropy中的权重必须与标签具有相同的等级?
有人能回答我吗?最好举个例子。
发布于 2018-02-08 12:16:41
您希望您的损失是加权的,所以tensorflow希望您将为您的每个标签提供权重。请考虑以下示例
Labels: [0, 0, 0, 1, 0]
possible_weights1: [1]
possible_weights2: [1, 2, 1, 1, 1]
illegal_weights1: [1, 2]
illegal_weights2: [[1], [2]]在这里,标签的级别为1(仅为1维),因此tensorflow希望您可以为标签中的每个元素提供权重(如possible_weights2中所示),或者为每个维度提供权重(如在possible_weights1中演示的,这是向[1, 1, 1, 1, 1]广播的)。
但是,如果您有illegal_weights2作为您的权重,那么tensorflow不知道它应该如何处理权重中的两个维度,因为标签中只有一个维度?所以你的军衔应该保持不变。
如果等级相同,但权重与标签的长度不相同,长度1(可以广播),但长度2不能广播,因此是非法的,则为illegal_weights1。
https://stackoverflow.com/questions/48682703
复制相似问题