Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

utils.py 1.5 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
  1. from sklearn.metrics import f1_score
  2. import tqdm
  3. def epoch_run(
  4. model,
  5. data_loader,
  6. criterion,
  7. score_fun=None,
  8. trainer_mode=False,
  9. optimizer = None,
  10. ):
  11. """
  12. Will this modify the model in-place?
  13. Args
  14. ----
  15. model: pytorch model
  16. data_loader: pytorch Dataloader to load data
  17. criterion: the function to compute loss
  18. it should take as args "input" and "target"
  19. score_fun: function to compute score
  20. it should take as args "input" and "target"
  21. if None, score_fun will be set to criterion
  22. trainer_mode: if True, will update model parameters
  23. optimizer: optimizer to use to update model parameters
  24. """
  25. model.eval()
  26. if trainer_mode is True:
  27. assert optimizer is not None
  28. model.train()
  29. if score_fun is None:
  30. score_fun = criterion
  31. losses = []
  32. scores = []
  33. with tqdm.tqdm(total=len(data_loader)) as progress_bar:
  34. for datum in data_loader:
  35. x_in, y_target = datum
  36. y_pred = model(x_in)
  37. loss = criterion(input=y_pred,target=y_target)
  38. losses.append(loss.item())
  39. score = score_fun(input=y_pred,target=y_target)
  40. scores.append(score)
  41. progress_bar.update(1)
  42. if trainer_mode is True:
  43. optimizer.zero_grad()
  44. loss.backward()
  45. optimizer.step()
  46. avg_loss = sum(losses)/len(losses)
  47. avg_score = sum(scores)/len(scores)
  48. return {"loss":avg_loss, "score":avg_score}
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...