quant-iota commited on
Commit
edc2ba8
·
verified ·
1 Parent(s): a2f9e00

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -5
app.py CHANGED
@@ -114,12 +114,15 @@ class SKAModel(nn.Module):
114
  self.output_history = []
115
 
116
 
117
- def get_mnist_per_class(samples_per_class):
118
  """Select N samples per class from MNIST, return dict of {digit: images}."""
119
  targets = mnist_dataset.targets.numpy()
 
120
  digit_images = {}
121
  for digit in range(10):
122
- indices = np.where(targets == digit)[0][:samples_per_class]
 
 
123
  images_list = []
124
  for idx in indices:
125
  img, _ = mnist_dataset[idx]
@@ -128,7 +131,7 @@ def get_mnist_per_class(samples_per_class):
128
  return digit_images
129
 
130
 
131
- def run_ska_per_class(neurons_str, K, tau, samples_per_class):
132
  # Parse layer sizes
133
  try:
134
  layer_sizes = [int(x.strip()) for x in neurons_str.split(",")]
@@ -137,10 +140,11 @@ def run_ska_per_class(neurons_str, K, tau, samples_per_class):
137
 
138
  K = int(K)
139
  samples_per_class = int(samples_per_class)
 
140
  learning_rate = tau / K
141
 
142
  # Get data per class
143
- digit_images = get_mnist_per_class(samples_per_class)
144
 
145
  # Run SKA separately for each digit
146
  all_entropy_histories = {}
@@ -197,6 +201,7 @@ with gr.Blocks(title="SKA Per-Class Entropy Explorer") as demo:
197
  k_slider = gr.Slider(1, 200, value=50, step=1, label="K (forward steps)")
198
  tau_slider = gr.Slider(0.25, 0.75, value=0.5, step=0.01, label="Learning budget τ (τ = η.K)")
199
  samples_slider = gr.Slider(1, 100, value=100, step=1, label="Samples per class")
 
200
  run_btn = gr.Button("Run SKA Per-Class", variant="primary")
201
 
202
  gr.Markdown("---")
@@ -218,7 +223,7 @@ with gr.Blocks(title="SKA Per-Class Entropy Explorer") as demo:
218
 
219
  run_btn.click(
220
  fn=run_ska_per_class,
221
- inputs=[neurons_input, k_slider, tau_slider, samples_slider],
222
  outputs=[plot_entropy],
223
  )
224
 
 
114
  self.output_history = []
115
 
116
 
117
+ def get_mnist_per_class(samples_per_class, data_seed=0):
118
  """Select N samples per class from MNIST, return dict of {digit: images}."""
119
  targets = mnist_dataset.targets.numpy()
120
+ rng = np.random.RandomState(data_seed)
121
  digit_images = {}
122
  for digit in range(10):
123
+ all_indices = np.where(targets == digit)[0]
124
+ rng.shuffle(all_indices)
125
+ indices = all_indices[:samples_per_class]
126
  images_list = []
127
  for idx in indices:
128
  img, _ = mnist_dataset[idx]
 
131
  return digit_images
132
 
133
 
134
+ def run_ska_per_class(neurons_str, K, tau, samples_per_class, data_seed):
135
  # Parse layer sizes
136
  try:
137
  layer_sizes = [int(x.strip()) for x in neurons_str.split(",")]
 
140
 
141
  K = int(K)
142
  samples_per_class = int(samples_per_class)
143
+ data_seed = int(data_seed)
144
  learning_rate = tau / K
145
 
146
  # Get data per class
147
+ digit_images = get_mnist_per_class(samples_per_class, data_seed)
148
 
149
  # Run SKA separately for each digit
150
  all_entropy_histories = {}
 
201
  k_slider = gr.Slider(1, 200, value=50, step=1, label="K (forward steps)")
202
  tau_slider = gr.Slider(0.25, 0.75, value=0.5, step=0.01, label="Learning budget τ (τ = η.K)")
203
  samples_slider = gr.Slider(1, 100, value=100, step=1, label="Samples per class")
204
+ seed_slider = gr.Slider(0, 99, value=0, step=1, label="Data seed (shuffle samples)")
205
  run_btn = gr.Button("Run SKA Per-Class", variant="primary")
206
 
207
  gr.Markdown("---")
 
223
 
224
  run_btn.click(
225
  fn=run_ska_per_class,
226
+ inputs=[neurons_input, k_slider, tau_slider, samples_slider, seed_slider],
227
  outputs=[plot_entropy],
228
  )
229