wayneBin
wayneBin
作者你好,我研读源码时发现一个比较疑惑的问题,想请教一下。 - 问题所在代码路径是这里: https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/reranker/modeling.py - 具体的问题出现在代码中,计算loss部分的: 计算loss时候所用代码为 ```python loss = self.cross_entropy(scores, self.target_label) ``` - 其中target_label: 代码初始化时,注册了一个target_label,是一个长为batch_size,且全为0,的一维tensor。 - scores是一个,size为(batch_size, train_group_size)的tensor - 我问题是需要确认以下理解是否有误: 这里整个过程是否是如此:输入为 (batch_size*train_group_size, seq_len )也即每个(query,doc)单独输入模型,输出一个logit其size为(batch_size*train_group_size,1)=> 对于每个query,将其所有相关的doc打包起来,间接认为是一个多分类的输出也即 scores的(batch_size, train_group_size)=> 认为第一个打包的query结果其标签都是0,也即我们的正样本pos,故而target_label 都为0...