File size: 3,277 Bytes
7c851a4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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()