TuringsSolutions commited on
Commit
205db22
·
verified ·
1 Parent(s): ab82b43

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -21
app.py CHANGED
@@ -1,7 +1,6 @@
1
  import gradio as gr
2
  import numpy as np
3
  import logging
4
- import requests
5
  from tqdm import tqdm
6
 
7
  class SwarmAgent:
@@ -12,11 +11,11 @@ class SwarmAgent:
12
  self.v = np.zeros_like(position)
13
 
14
  class SwarmNeuralNetwork:
15
- def __init__(self, num_agents, param_shape, target_response, api_endpoint):
16
  self.param_shape = param_shape
17
  self.agents = [SwarmAgent(self.random_position(), self.random_velocity()) for _ in range(num_agents)]
18
  self.target_response = target_response
19
- self.api_endpoint = api_endpoint
20
  self.current_epoch = 0
21
  self.noise_schedule = np.linspace(0.1, 0.002, 1000) # Noise schedule
22
 
@@ -26,15 +25,10 @@ class SwarmNeuralNetwork:
26
  def random_velocity(self):
27
  return np.random.randn(*self.param_shape) * 0.01
28
 
29
- def call_api(self, params):
30
- # Make an API call with parameters
31
- # In a real-world scenario, params would be converted into a proper API request format
32
- try:
33
- response = requests.get(self.api_endpoint)
34
- response_value = len(response.text) # Example: use length of response text as a metric
35
- except Exception as e:
36
- response_value = 0 # Fallback if API call fails
37
- return response_value
38
 
39
  def update_agents(self, timestep):
40
  noise_level = self.noise_schedule[min(timestep, len(self.noise_schedule) - 1)]
@@ -59,7 +53,7 @@ class SwarmNeuralNetwork:
59
  self.update_agents(epoch)
60
 
61
  # Evaluate performance
62
- responses = [self.call_api(agent.position) for agent in self.agents]
63
  mse = np.mean((np.array(responses) - self.target_response)**2)
64
  logging.info(f"Epoch {epoch}, MSE: {mse}")
65
 
@@ -86,20 +80,24 @@ class SwarmNeuralNetwork:
86
  for step in tqdm(range(num_steps), desc="Generating Parameters"):
87
  self.update_agents(num_steps - step - 1) # Reverse order
88
 
89
- best_agent = min(self.agents, key=lambda agent: np.mean((self.call_api(agent.position) - self.target_response)**2))
90
  return best_agent.position
91
 
 
 
 
 
92
  # Gradio Interface
93
- def train_snn(api_endpoint, target_response, num_agents, epochs):
94
  param_shape = (10,) # Example parameter shape
95
- snn = SwarmNeuralNetwork(num_agents=num_agents, param_shape=param_shape, target_response=target_response, api_endpoint=api_endpoint)
96
  snn.train(epochs=epochs)
97
  snn.save_model('snn_model.npy')
98
  return snn.generate_new_parameters()
99
 
100
- def generate_new_parameters(api_endpoint):
101
  param_shape = (10,) # Example parameter shape
102
- snn = SwarmNeuralNetwork(num_agents=2000, param_shape=param_shape, target_response=None, api_endpoint=api_endpoint)
103
  snn.load_model('snn_model.npy')
104
  new_params = snn.generate_new_parameters()
105
  return new_params
@@ -107,14 +105,13 @@ def generate_new_parameters(api_endpoint):
107
  interface = gr.Interface(
108
  fn=train_snn,
109
  inputs=[
110
- gr.Textbox(label="API Endpoint", value="https://meowfacts.herokuapp.com/"),
111
  gr.Number(label="Target Response"),
112
  gr.Slider(minimum=500, maximum=3000, value=2000, label="Number of Agents"),
113
  gr.Slider(minimum=10, maximum=200, value=100, label="Number of Epochs")
114
  ],
115
  outputs=gr.Textbox(label="Generated Parameters"),
116
- title="Swarm Neural Network API Parameter Optimization",
117
- description="Set the API endpoint, target response, number of agents, and epochs to train the Swarm Neural Network to generate optimized API parameters."
118
  )
119
 
120
  interface.launch()
 
1
  import gradio as gr
2
  import numpy as np
3
  import logging
 
4
  from tqdm import tqdm
5
 
6
  class SwarmAgent:
 
11
  self.v = np.zeros_like(position)
12
 
13
  class SwarmNeuralNetwork:
14
+ def __init__(self, num_agents, param_shape, target_response, optimization_function):
15
  self.param_shape = param_shape
16
  self.agents = [SwarmAgent(self.random_position(), self.random_velocity()) for _ in range(num_agents)]
17
  self.target_response = target_response
18
+ self.optimization_function = optimization_function
19
  self.current_epoch = 0
20
  self.noise_schedule = np.linspace(0.1, 0.002, 1000) # Noise schedule
21
 
 
25
  def random_velocity(self):
26
  return np.random.randn(*self.param_shape) * 0.01
27
 
28
+ def evaluate_function(self, params):
29
+ # Evaluate the optimization function
30
+ response = self.optimization_function(params)
31
+ return response
 
 
 
 
 
32
 
33
  def update_agents(self, timestep):
34
  noise_level = self.noise_schedule[min(timestep, len(self.noise_schedule) - 1)]
 
53
  self.update_agents(epoch)
54
 
55
  # Evaluate performance
56
+ responses = [self.evaluate_function(agent.position) for agent in self.agents]
57
  mse = np.mean((np.array(responses) - self.target_response)**2)
58
  logging.info(f"Epoch {epoch}, MSE: {mse}")
59
 
 
80
  for step in tqdm(range(num_steps), desc="Generating Parameters"):
81
  self.update_agents(num_steps - step - 1) # Reverse order
82
 
83
+ best_agent = min(self.agents, key=lambda agent: np.mean((self.evaluate_function(agent.position) - self.target_response)**2))
84
  return best_agent.position
85
 
86
+ # Optimization function
87
+ def optimization_function(params):
88
+ return np.sum((params - 3)**2) # Example: simple quadratic function
89
+
90
  # Gradio Interface
91
+ def train_snn(target_response, num_agents, epochs):
92
  param_shape = (10,) # Example parameter shape
93
+ snn = SwarmNeuralNetwork(num_agents=num_agents, param_shape=param_shape, target_response=target_response, optimization_function=optimization_function)
94
  snn.train(epochs=epochs)
95
  snn.save_model('snn_model.npy')
96
  return snn.generate_new_parameters()
97
 
98
+ def generate_new_parameters():
99
  param_shape = (10,) # Example parameter shape
100
+ snn = SwarmNeuralNetwork(num_agents=2000, param_shape=param_shape, target_response=None, optimization_function=optimization_function)
101
  snn.load_model('snn_model.npy')
102
  new_params = snn.generate_new_parameters()
103
  return new_params
 
105
  interface = gr.Interface(
106
  fn=train_snn,
107
  inputs=[
 
108
  gr.Number(label="Target Response"),
109
  gr.Slider(minimum=500, maximum=3000, value=2000, label="Number of Agents"),
110
  gr.Slider(minimum=10, maximum=200, value=100, label="Number of Epochs")
111
  ],
112
  outputs=gr.Textbox(label="Generated Parameters"),
113
+ title="Swarm Neural Network Function Optimization",
114
+ description="Set the target response, number of agents, and epochs to train the Swarm Neural Network to generate optimized function parameters."
115
  )
116
 
117
  interface.launch()