Skip to content
Snippets Groups Projects
Commit 950eb155 authored by marvnsch's avatar marvnsch
Browse files

Final refinements

parent 9c24a7e9
No related branches found
No related tags found
No related merge requests found
# NLP Machine Learning Project (Machine Translator EN <-> DE) # NLP Machine Learning Project | Machine Translator EN -> DE
## BLEU scores ## BLEU scores
...@@ -20,3 +20,6 @@ Train a machine translator based on a recurrent neural network. ...@@ -20,3 +20,6 @@ Train a machine translator based on a recurrent neural network.
3. Run `conda env create -f env.yaml` 3. Run `conda env create -f env.yaml`
4. Run `conda activate nlp-machine-learning-project` 4. Run `conda activate nlp-machine-learning-project`
5. Set the created environment as the python interpreter within your IDE 5. Set the created environment as the python interpreter within your IDE
6. Run the python files within the models directory
link to the repo: https://git.cs.uni-paderborn.de/marvnsch/nlp-machine-translation-project
\ No newline at end of file
...@@ -103,8 +103,7 @@ class Seq2Seq(nn.Module): ...@@ -103,8 +103,7 @@ class Seq2Seq(nn.Module):
# setup environment # setup environment
source_data_path = str(project_root / "data/tokenizer-data/news-commentary-v11.en") source_data_path = str(project_root / "data/tokenizer-data/news-commentary-v11.en")
target_data_path = str(project_root / "data/tokenizer-data/news-commentary-v11.de") target_data_path = str(project_root / "data/tokenizer-data/news-commentary-v11.de")
#device = utils.pytorch.get_available_device() device = utils.pytorch.get_available_device()
device = torch.device('cpu')
date_time_now = datetime.now().strftime("%m%d%Y_%H%M") date_time_now = datetime.now().strftime("%m%d%Y_%H%M")
model_output_path = str(work_dir / f"./checkpoints/{date_time_now}_RNN_no_attention_bidirectional.pt") model_output_path = str(work_dir / f"./checkpoints/{date_time_now}_RNN_no_attention_bidirectional.pt")
...@@ -164,8 +163,7 @@ data_loader = data.preprocessing.data_loader(source=source_data, ...@@ -164,8 +163,7 @@ data_loader = data.preprocessing.data_loader(source=source_data,
target_tokenizer=target_tokenizer, target_tokenizer=target_tokenizer,
dataset_size=dataset_size, dataset_size=dataset_size,
torch_device=device, torch_device=device,
data_split=train_dev_val_split, data_split=train_dev_val_split)
return_data=True)
source_data = None source_data = None
target_data = None target_data = None
...@@ -178,21 +176,20 @@ except FileExistsError: ...@@ -178,21 +176,20 @@ except FileExistsError:
# train the model # train the model
#utils.operation.train(model=model, utils.operation.train(model=model,
# data_loader=data_loader, data_loader=data_loader,
# criterion=criterion, criterion=criterion,
# optimizer=optimizer, optimizer=optimizer,
# num_epochs=num_epochs, num_epochs=num_epochs,
# num_of_batches_per_epoch=train_batches_count, num_of_batches_per_epoch=train_batches_count,
# saving_interval=500, saving_interval=500,
# model_output_path=model_output_path) model_output_path=model_output_path)
_, _, val_data_loader = data_loader() _, _, val_data_loader = data_loader()
# evaluate the model # evaluate the model
utils.operation.evaluateModelFromFile(model=model, utils.operation.evaluate(model=model,
data_loader=data_loader, val_data_loader=val_data_loader,
model_path=str(work_dir / "./checkpoints/01242024_1659_RNN_no_attention_bidirectional.pth"),
source_tokenizer=source_tokenizer, source_tokenizer=source_tokenizer,
target_tokenizer=target_tokenizer) target_tokenizer=target_tokenizer)
...@@ -157,8 +157,7 @@ data_loader = data.preprocessing.data_loader(source=source_data, ...@@ -157,8 +157,7 @@ data_loader = data.preprocessing.data_loader(source=source_data,
target_tokenizer=target_tokenizer, target_tokenizer=target_tokenizer,
dataset_size=dataset_size, dataset_size=dataset_size,
torch_device=device, torch_device=device,
data_split=train_dev_val_split, data_split=train_dev_val_split)
return_data=True)
source_data = None source_data = None
target_data = None target_data = None
...@@ -171,20 +170,19 @@ except FileExistsError: ...@@ -171,20 +170,19 @@ except FileExistsError:
# train the model # train the model
#utils.operation.train(model=model, utils.operation.train(model=model,
# data_loader=data_loader, data_loader=data_loader,
# criterion=criterion, criterion=criterion,
# optimizer=optimizer, optimizer=optimizer,
# num_epochs=num_epochs, num_epochs=num_epochs,
# num_of_batches_per_epoch=train_batches_count, num_of_batches_per_epoch=train_batches_count,
# saving_interval=500, saving_interval=500,
# model_output_path=model_output_path) model_output_path=model_output_path)
_, _, val_data_loader = data_loader() _, _, val_data_loader = data_loader()
# evaluate the model # evaluate the model
utils.operation.evaluateModelFromFile(model=model, utils.operation.evaluate(model=model,
data_loader=data_loader, val_data_loader=val_data_loader,
model_path=str(work_dir / "./checkpoints/01242024_1324_RNN_no_attention_unidirectional.pth"),
source_tokenizer=source_tokenizer, source_tokenizer=source_tokenizer,
target_tokenizer=target_tokenizer) target_tokenizer=target_tokenizer)
\ No newline at end of file
...@@ -196,8 +196,7 @@ data_loader = data.preprocessing.data_loader(source=source_data, ...@@ -196,8 +196,7 @@ data_loader = data.preprocessing.data_loader(source=source_data,
target_tokenizer=target_tokenizer, target_tokenizer=target_tokenizer,
dataset_size=dataset_size, dataset_size=dataset_size,
torch_device=device, torch_device=device,
data_split=train_dev_val_split, data_split=train_dev_val_split)
return_data=True)
source_data = None source_data = None
target_data = None target_data = None
...@@ -209,22 +208,21 @@ except FileExistsError: ...@@ -209,22 +208,21 @@ except FileExistsError:
pass pass
# train the model # train the model
#utils.operation.train(model=model, utils.operation.train(model=model,
# data_loader=data_loader, data_loader=data_loader,
# criterion=criterion, criterion=criterion,
# optimizer=optimizer, optimizer=optimizer,
# num_epochs=num_epochs, num_epochs=num_epochs,
# num_of_batches_per_epoch=train_batches_count, num_of_batches_per_epoch=train_batches_count,
# saving_interval=500, saving_interval=500,
# model_output_path=model_output_path) model_output_path=model_output_path)
_, _, val_data_loader = data_loader() _, _, val_data_loader = data_loader()
# evaluate the model # evaluate the model
utils.operation.evaluateModelFromFile(model=model, utils.operation.evaluate(model=model,
data_loader=data_loader, val_data_loader=val_data_loader,
model_path=str(work_dir / "./checkpoints/01242024_1748_RNN_attention_bidirectional.pth"),
source_tokenizer=source_tokenizer, source_tokenizer=source_tokenizer,
target_tokenizer=target_tokenizer) target_tokenizer=target_tokenizer)
......
...@@ -101,7 +101,7 @@ def train(model, data_loader, num_of_batches_per_epoch: int, ...@@ -101,7 +101,7 @@ def train(model, data_loader, num_of_batches_per_epoch: int,
def evaluate(model, val_data_loader, def evaluate(model, val_data_loader,
source_tokenizer: Tokenizer, source_tokenizer: Tokenizer,
target_tokenizer: Tokenizer, target_tokenizer: Tokenizer,
print_num_examples: int = 0): print_num_examples: int = 10):
model.eval() model.eval()
source_corpus = [] source_corpus = []
...@@ -127,8 +127,6 @@ def evaluate(model, val_data_loader, ...@@ -127,8 +127,6 @@ def evaluate(model, val_data_loader,
print(f"< {candidate_corpus[idx]}") print(f"< {candidate_corpus[idx]}")
print() print()
print(f"BLEU score result: {bleu_score(candidate_corpus, reference_corpus)}")
def evaluateModelFromFile(model: torch.nn.Module, data_loader, model_path:str, def evaluateModelFromFile(model: torch.nn.Module, data_loader, model_path:str,
source_tokenizer: Tokenizer, source_tokenizer: Tokenizer,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment