Update app.py
Browse files
app.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import gradio as gr
|
2 |
import numpy as np
|
3 |
import logging
|
|
|
4 |
from tqdm import tqdm
|
5 |
|
6 |
class SwarmAgent:
|
@@ -11,10 +12,11 @@ class SwarmAgent:
|
|
11 |
self.v = np.zeros_like(position)
|
12 |
|
13 |
class SwarmNeuralNetwork:
|
14 |
-
def __init__(self, num_agents, param_shape, target_response):
|
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.current_epoch = 0
|
19 |
self.noise_schedule = np.linspace(0.1, 0.002, 1000) # Noise schedule
|
20 |
|
@@ -25,11 +27,14 @@ class SwarmNeuralNetwork:
|
|
25 |
return np.random.randn(*self.param_shape) * 0.01
|
26 |
|
27 |
def call_api(self, params):
|
28 |
-
#
|
29 |
-
#
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
33 |
|
34 |
def update_agents(self, timestep):
|
35 |
noise_level = self.noise_schedule[min(timestep, len(self.noise_schedule) - 1)]
|
@@ -85,16 +90,16 @@ class SwarmNeuralNetwork:
|
|
85 |
return best_agent.position
|
86 |
|
87 |
# Gradio Interface
|
88 |
-
def train_snn(target_response, num_agents, epochs):
|
89 |
param_shape = (10,) # Example parameter shape
|
90 |
-
snn = SwarmNeuralNetwork(num_agents=num_agents, param_shape=param_shape, target_response=target_response)
|
91 |
snn.train(epochs=epochs)
|
92 |
snn.save_model('snn_model.npy')
|
93 |
return snn.generate_new_parameters()
|
94 |
|
95 |
-
def generate_new_parameters():
|
96 |
param_shape = (10,) # Example parameter shape
|
97 |
-
snn = SwarmNeuralNetwork(num_agents=2000, param_shape=param_shape, target_response=None)
|
98 |
snn.load_model('snn_model.npy')
|
99 |
new_params = snn.generate_new_parameters()
|
100 |
return new_params
|
@@ -102,13 +107,14 @@ def generate_new_parameters():
|
|
102 |
interface = gr.Interface(
|
103 |
fn=train_snn,
|
104 |
inputs=[
|
|
|
105 |
gr.Number(label="Target Response"),
|
106 |
gr.Slider(minimum=500, maximum=3000, value=2000, label="Number of Agents"),
|
107 |
gr.Slider(minimum=10, maximum=200, value=100, label="Number of Epochs")
|
108 |
],
|
109 |
outputs=gr.Textbox(label="Generated Parameters"),
|
110 |
title="Swarm Neural Network API Parameter Optimization",
|
111 |
-
description="Set the target response
|
112 |
)
|
113 |
|
114 |
interface.launch()
|
|
|
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 |
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 |
|
|
|
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)]
|
|
|
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 |
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()
|