diff --git a/dan/manager/ocr.py b/dan/manager/ocr.py
index da1db034b9e34a248159c3949b88e67a91788681..0ee834d04c0e4fe56e41c18828474451a4e08eb7 100644
--- a/dan/manager/ocr.py
+++ b/dan/manager/ocr.py
@@ -1,5 +1,4 @@
 # -*- coding: utf-8 -*-
-import copy
 import os
 import pickle
 
@@ -62,7 +61,7 @@ class OCRDataset(GenericDataset):
         self.collate_function = OCRCollateFunction
 
     def __getitem__(self, idx):
-        sample = copy.deepcopy(self.samples[idx])
+        sample = dict(**self.samples[idx])
 
         if not self.load_in_memory:
             sample["img"] = self.get_sample_img(idx)
diff --git a/dan/manager/training.py b/dan/manager/training.py
index 27bdf224b3095a14d4269ee27b8a41a670226ac5..3b472a2b77a491a64b02e9d6d4c3870d2ef34158 100644
--- a/dan/manager/training.py
+++ b/dan/manager/training.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
-import copy
 import json
 import os
 import random
+from copy import deepcopy
 from time import time
 
 import numpy as np
@@ -481,8 +481,7 @@ class GenericTrainingManager:
         path = os.path.join(self.paths["results"], "params")
         if os.path.isfile(path):
             return
-        params = copy.deepcopy(self.params)
-        params = class_to_str_dict(params)
+        params = class_to_str_dict(my_dict=deepcopy(self.params))
         total_params = 0
         for model_name in self.models.keys():
             current_params = compute_nb_params(self.models[model_name])