Spaces:
Sleeping
Sleeping
| 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() | |