小编hon*_*yun的帖子

pytorch KLDivLoss损失为负

我的目标是训练跨度预测模型

可以预测BERT输出序列中的位置

我的输入形状是 (batch_size, max_sequence_len(512),embedding_size(768))

输出的形状将为 (batch_size , max_sequence_len , 1) 并且第三个暗淡代表概率,然后我将输出重塑为 (batch_size,max_sequence_len)

我的标签的形状是(batch_size,max_sequence_len),在max_sequence_len(512)中,只有一个位置为1,其他位置为零

我已经检查过了

(batch_size is 2)
start_pos_labels.sum(dim=1)
output >> 
tensor([1.0000, 1.0000], device='cuda:0', dtype=torch.float64)

start_pred.sum(dim=1)
tensor([1., 1.], device='cuda:0', dtype=torch.float64, grad_fn=<SumBackward1>)
Run Code Online (Sandbox Code Playgroud)

但是当我使用 nn.KLDivLoss() 时,输出仍然为负,我真的不知道为什么

有人可以帮助我吗?谢谢!

这是我的代码模型代码

class posClassfication_new(nn.Module):
    def __init__(self):
        super(posClassfication_new, self).__init__()
        self.start_task = nn.Sequential(
            nn.Linear(768, 1),
#             nn.ReLU(),
#             nn.Linear(256, 128),
#             nn.ReLU(),
#             nn.Linear(128, 1)
        )    
        self.end_task = nn.Sequential(
            nn.Linear(768, 1),
#             nn.ReLU(),
#             nn.Linear(256, 128),
#             nn.ReLU(),
#             nn.Linear(128, 1)
        ) 
#             
    def forward(self, start_x,end_x):
        start_x = …
Run Code Online (Sandbox Code Playgroud)

python nlp machine-learning pytorch loss-function

2
推荐指数
1
解决办法
8222
查看次数

标签 统计

loss-function ×1

machine-learning ×1

nlp ×1

python ×1

pytorch ×1