BERT-pytorch icon indicating copy to clipboard operation
BERT-pytorch copied to clipboard

A bug in dataset.py

Open sweetchild222 opened this issue 3 months ago • 0 comments

line 114 in https://github.com/codertimo/BERT-pytorch/blob/master/bert_pytorch/dataset/dataset.py

then original code generate abnormal data with wrong is_next_lable. for example, when corpus is below.

Welcome to the  \t the jungle\n
I can stay  \t  here all night\n

the original code generate t1, t2, is_next_lable like below

t1 t2 is_next_lable
Welcome to the the jungle 1 (correct)
I can stay here all night 1 (correct)
Welcome to the here all night 0 (correct)
I can stay the jungle 0 (correct)
Welcome to the the jungle 0 (wrong)
I can stay here all night 0 (wrong)

it's hard to find problem when corpus is huge because of little portion of abnormal data on total data but if corpus is too small, loss will not decreased because of big portion of abnormal data on total data. this problem related to #32

so, solve the problem. fix the code below

    def get_random_line(self, exclude_index):
        if self.on_memory:
            find_index = -1

            while True:
                find_index = random.randrange(len(self.lines))

                if exclude_index != find_index:
                    return self.lines[find_index][1]
                        :

I tested fixed code with small corpus include only 5 line

Welcome to the  \t the jungle\n
I can stay   \t  here all night\n
You need to apologize to   \t her and need to do it right away\n
Hundreds of soldiers ate in  \t silence around their campfires\n
I asked twenty people to  \t my party but not all of them came\n

losses have been reduced. this is training log.

Image

sweetchild222 avatar Sep 12 '25 05:09 sweetchild222