Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

77 Zeilen
3.0KB

  1. import os
  2. import tkinter as tk
  3. from data.mnist_loader import MNISTModelData
  4. from ui.app_state import AppState
  5. from ui.front_page.sections.model_overview_section import NeuralNetInfo
  6. from ui.front_page.sections.test_model_section import TestModelSection
  7. from ui.front_page.sections.training_section import TrainingSection
  8. class FrontPage(tk.Frame):
  9. def __init__(self, parent, app_state: AppState):
  10. super().__init__(parent)
  11. self.parent = parent
  12. self.app_state = app_state
  13. self.main_frame = None
  14. self.neural_net_info = None
  15. self.model_actions_frame = None
  16. self.start_training_section = None
  17. self.test_model_section = None
  18. self.training_section = None
  19. self.test_model_section = None
  20. self.create_ui()
  21. def create_ui(self):
  22. (tk.Label(self, text="Welcome to MNIST Learning Center", font=("Arial", 16))
  23. .pack(side=tk.TOP, fill=tk.BOTH, expand=False, padx=5))
  24. self.main_frame = tk.Frame(self)
  25. self.main_frame.pack(fill=tk.BOTH, expand=True)
  26. self.neural_net_info = NeuralNetInfo(self.main_frame, self.app_state, self.on_model_loaded, self.on_data_loaded)
  27. self.neural_net_info.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=5)
  28. self.load_model_actions_frame()
  29. def update(self):
  30. if self.neural_net_info is not None:
  31. self.neural_net_info.update()
  32. self.load_model_actions_frame()
  33. def load_model_actions_frame(self):
  34. if self.model_actions_frame is None and self.app_state.neural_net is not None and self.app_state.model_data is not None:
  35. self.model_actions_frame = tk.Frame(self.main_frame)
  36. self.model_actions_frame.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True, padx=5)
  37. self.training_section = TrainingSection(self.model_actions_frame, self.app_state, self.after_training)
  38. self.training_section.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=5)
  39. self.test_model_section = TestModelSection(self.model_actions_frame, self.app_state)
  40. self.test_model_section.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True, padx=5)
  41. else:
  42. if self.test_model_section is not None:
  43. self.test_model_section.update()
  44. if self.training_section is not None:
  45. self.training_section.update()
  46. def on_data_loaded(self):
  47. print("Data loaded")
  48. self.update()
  49. def on_model_loaded(self):
  50. print("Model loaded")
  51. self.update()
  52. def load_training_data(self):
  53. data_folder = "/projects/learning/datasets/minst"
  54. self.app_state.model_data = MNISTModelData(
  55. os.path.join(data_folder, "train-images-idx3-ubyte"),
  56. os.path.join(data_folder, "train-labels-idx1-ubyte"),
  57. os.path.join(data_folder, "t10k-images-idx3-ubyte"),
  58. os.path.join(data_folder, "t10k-labels-idx1-ubyte")
  59. )
  60. self.update()
  61. def after_training(self):
  62. self.update()