ClassSR icon indicating copy to clipboard operation
ClassSR copied to clipboard

loss权重的相关问题

Open shuosir opened this issue 4 years ago • 3 comments

 您好,我对您的工作非常感兴趣。
 我注意到您的模型在训练分类器的时候设置的loss权重 l1 : class : avg 是 2000:1:6 。我想请问这部分是怎么设置的。其次,我想请教一下在训练过程中,添加权重后的各个损失的比例要接近1:1:1还是在l1的比重更大呢?
 期待您的回复,感谢!

shuosir avatar Jan 12 '22 09:01 shuosir

保证这些loss的值在一个水平上(一个数量级上),比重可以根据具体情况调整,在支撑文件里有相关实验

Xiangtaokong avatar Jan 12 '22 09:01 Xiangtaokong

您好,在代码中定义的class loss和average loss为

# class loss
        n = len(type_res)
        m = len(type_res[0]) - 1
        type_all = type_res
        loss = 0
        for i in range(n):
            sum_re = abs(type_all[i][0] - type_all[i][1]) + abs(type_all[i][0] - type_all[i][2]) + abs(
                type_all[i][1] - type_all[i][2])
            loss += (m - sum_re)
        return loss / n

# average loss
        n = len(type_res)
        m = len(type_res[0])
        type_all = type_res
        sum1 = 0
        sum2 = 0
        sum3 = 0

        for i in range(n):
            sum1 += type_all[i][0]
            sum2 += type_all[i][1]
            sum3 += type_all[i][2]

        return (abs(sum1 - n / m) + abs(sum2 - n / m) + abs(sum3 - n / m)) / ((n / m) * 4)

但对照论文中的class loss和average loss的定义里没有(m - sum_re)((n / m) * 4),请问如何理解这两处呢?

Logan507 avatar May 07 '22 10:05 Logan507

您好,在代码中定义的class loss和average loss为

# class loss
        n = len(type_res)
        m = len(type_res[0]) - 1
        type_all = type_res
        loss = 0
        for i in range(n):
            sum_re = abs(type_all[i][0] - type_all[i][1]) + abs(type_all[i][0] - type_all[i][2]) + abs(
                type_all[i][1] - type_all[i][2])
            loss += (m - sum_re)
        return loss / n

# average loss
        n = len(type_res)
        m = len(type_res[0])
        type_all = type_res
        sum1 = 0
        sum2 = 0
        sum3 = 0

        for i in range(n):
            sum1 += type_all[i][0]
            sum2 += type_all[i][1]
            sum3 += type_all[i][2]

        return (abs(sum1 - n / m) + abs(sum2 - n / m) + abs(sum3 - n / m)) / ((n / m) * 4)

但对照论文中的class loss和average loss的定义里没有(m - sum_re)((n / m) * 4),请问如何理解这两处呢?

这是一个归一化操作,让loss的值在0-1之间(只是我的习惯),论文里是为了看着简洁清晰所以没写这些归一化系数。实际就相当于乘了一个参数,不影响loss含义。

Xiangtaokong avatar May 08 '22 10:05 Xiangtaokong