Skip to content

[BUG] - Bleu of machine translation #2485

Open
@AparnaAgrawal02

Description

@AparnaAgrawal02

Add Link

https://pytorch.org/tutorials/beginner/translation_transformer.html

Describe the bug

  • Expected Blue score of 35 -30

  • got near 0.6 - tested on test set got from Multi30k -Attaching here. (format: de|en)

  • Same code as the tutorial

  • code used to calculate Bleu score:

    from nltk.translate.bleu_score import sentence_bleu import numpy as np def bleu4(candidate, reference): score = sentence_bleu([reference], candidate, weights=(0.25, 0.25, 0.25, 0.25)) # score = sentence_bleu([reference], candidate) return score

  • Modified BlocK:

    `from timeit import default_timer as timer
    NUM_EPOCHS = 100
    
    for epoch in range(1, NUM_EPOCHS+1):
        start_time = timer()
        train_loss = train_epoch(transformer, optimizer)
        end_time = timer()
        val_loss = evaluate(transformer)
        print((f"Epoch: {epoch}, Train loss: {train_loss:.3f}, Val loss: {val_loss:.3f}, "f"Epoch time = {(end_time - start_time):.3f}s"))
    
        if epoch % 10 == 0:
            transformer.eval()
            i=0
            total_bleu = 0
            test = open("test.txt", "r").readlines()
            for r in test:
                data = r.strip().split('|')
                reference = data[1].split()
                candidate = translate(transformer, data[0]).split()
                total_bleu += bleu4(candidate, reference)
                print ("----------------- START -----------------")
                print ("GT: ", reference)
                print ("OUT: ", candidate)
                print ("BLEU for this example: ", bleu4(candidate, reference))
                print ("Average BLEU: ", total_bleu/(i+1))
    
                print ("----------------- END -----------------")
                i+=1
            print ("------FINAL BLEU: ", total_bleu/(i))
            with open("bleu_ours.txt", "a") as f:
                f.write("Epoch: " + str(epoch) + " BLEU: " + str(total_bleu/(i)) + "\n")
            if epoch % 50 == 0:
                torch.save(transformer.state_dict(), "transformer_ours"+str(epoch)+".pt")
    

    `

Describe your environment

Linux
Name: torch
Version: 2.0.1

cc @pytorch/team-text-core @Nayef211

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions