chenmouxiang's picture
Create app.py
7c851a4 verified
raw
history blame
3.28 kB
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()