Spaces:
Running
Running
import gradio as gr | |
import matplotlib.pyplot as plt | |
import numpy as np | |
# Predefined hyperparameter sets | |
PARAM_SETS = { | |
"Set A": {"param1": 0.1, "param2": 0.01, "param3": 100, "param4": 50}, | |
"Set B": {"param1": 0.2, "param2": 0.02, "param3": 200, "param4": 100} | |
} | |
def generate_plot(param1, param2, param3, param4): | |
"""Generate visualization based on hyperparameters""" | |
plt.figure(figsize=(10, 6)) | |
x = np.linspace(0, 10, int(param3)) | |
y = np.sin(x * param1) * np.cos(x * param2) * param4 | |
plt.plot(x, y) | |
plt.title(f'Parameter Visualization (p1={param1}, p2={param2}, p3={param3}, p4={param4})') | |
plt.grid(True) | |
return plt | |
def process_inputs(param_set, custom_param1, custom_param2, custom_param3, custom_param4, | |
input1, input2): | |
"""Process inputs and return results""" | |
# Determine which parameter set to use | |
if param_set in PARAM_SETS: | |
params = PARAM_SETS[param_set] | |
p1, p2, p3, p4 = params.values() | |
else: | |
p1, p2, p3, p4 = custom_param1, custom_param2, custom_param3, custom_param4 | |
# Generate plot | |
plot = generate_plot(p1, p2, p3, p4) | |
# Calculate result (example calculation) | |
result = (input1 * p1 + input2 * p2) * (p3 + p4) | |
return plot, result | |
# Create interface | |
with gr.Blocks() as demo: | |
gr.Markdown("# Hyperparameter Calculation and Visualization System") | |
with gr.Row(): | |
with gr.Column(): | |
# Hyperparameter selection section | |
param_set = gr.Dropdown( | |
choices=["Custom"] + list(PARAM_SETS.keys()), | |
value="Custom", | |
label="Select Hyperparameter Set" | |
) | |
# Custom parameter inputs | |
custom_param1 = gr.Number(value=0.1, label="Parameter 1 (Learning Rate)") | |
custom_param2 = gr.Number(value=0.01, label="Parameter 2 (Weight Decay)") | |
custom_param3 = gr.Number(value=100, label="Parameter 3 (Iterations)") | |
custom_param4 = gr.Number(value=50, label="Parameter 4 (Batch Size)") | |
# Input values | |
input1 = gr.Number(value=1.0, label="Input Value 1") | |
input2 = gr.Number(value=1.0, label="Input Value 2") | |
submit_btn = gr.Button("Calculate") | |
with gr.Column(): | |
# Output section | |
plot_output = gr.Plot(label="Parameter Visualization") | |
result_output = gr.Number(label="Calculation Result") | |
# Auto-fill parameters when selecting predefined sets | |
def update_params(param_set): | |
if param_set in PARAM_SETS: | |
params = PARAM_SETS[param_set] | |
return [params["param1"], params["param2"], params["param3"], params["param4"]] | |
return [gr.skip(), gr.skip(), gr.skip(), gr.skip()] | |
param_set.change( | |
update_params, | |
inputs=[param_set], | |
outputs=[custom_param1, custom_param2, custom_param3, custom_param4] | |
) | |
# Submit button event | |
submit_btn.click( | |
process_inputs, | |
inputs=[param_set, custom_param1, custom_param2, custom_param3, custom_param4, | |
input1, input2], | |
outputs=[plot_output, result_output] | |
) | |
# Launch application | |
demo.launch() | |