Pytorch:分解为nan Batch损失/对数概率

时间:2020-06-03 13:37:27

标签: python pytorch

我正在使用pytorch作为我想做的一些机器翻译任务的基础。 实例化数据集时,我将每个torchtext.data作为实例。例如[list(untokenized_string_sentence),untokenized_string_sentence,untokenized_string_sentence] 其中untokenized_string_sentence只是一个原始示例句子。我已经确保在某些自定义forward函数中将第一个输入作为列表处理时要小心。但是,我不知道批次损失计算是否正在相应地处理它,或者我是否需要注意这一点。我只是通过标签平滑和填充来调用nn.CrossEntropyLoss()。经过两批处理后,结果是完全NaN的前向通过(以及随后的NaN softmax值和损失)。

有人知道使用PyTorch进行不同类型的输入是否存在问题?

以下是我的类型的定义方式:

    src_field = data.Field(init_token=None, eos_token=EOS_TOKEN,
                           pad_token=PAD_TOKEN, tokenize=tok_fun,
                           batch_first=True, lower=lowercase,
                           unk_token=UNK_TOKEN,
                           include_lengths=True)

    trg_field = data.Field(init_token=BOS_TOKEN, eos_token=EOS_TOKEN,
                           pad_token=PAD_TOKEN, tokenize=tok_fun,
                           unk_token=UNK_TOKEN,
                           batch_first=True, lower=lowercase,
                           include_lengths=True)
    prev_inputs_field = data.NestedField(data.Field(init_token=CONTEXT_TOKEN, eos_token=CONTEXT_EOS_TOKEN,
                           pad_token=PAD_TOKEN, tokenize=tok_fun,
                           batch_first=True, lower=lowercase,
                           unk_token=UNK_TOKEN,
                           include_lengths=False), tokenize=sent_fun)

0 个答案:

没有答案