Adding Labels and Text to Your Gradio Interface
Gradio is a fantastic tool for quickly building and deploying machine learning models. One of its key strengths is its user-friendly interface, which allows you to create interactive demos without needing extensive web development knowledge. But what if you want to add some context or labels to your input and output components? That's where Gradio's ability to incorporate text and headings comes in.
Adding Text Before Input Components
Using label in the Input Function
The simplest way to add text before an input component is by using the label parameter within the input function. This parameter directly sets the text label that will appear above the input component. This is ideal for providing clear instructions or context for your users.
html import gradio as gr def greet(name): return f"Hello, {name}!" iface = gr.Interface( fn=greet, inputs=gr.Textbox(label="Enter your name:"), outputs=gr.Textbox(), title="Greeting App" ) iface.launch() Using Markdown for Enhanced Formatting
For more complex labels or if you want to use formatting like bold text or bullet points, you can leverage Markdown within the label parameter. This allows you to create visually appealing and informative instructions for your users.
html import gradio as gr def greet(name): return f"Hello, {name}!" iface = gr.Interface( fn=greet, inputs=gr.Textbox(label="Enter your name:\n- Please type your full name."), outputs=gr.Textbox(), title="Greeting App" ) iface.launch() Adding Text Before Output Components
Using label in the Output Function
Similar to input components, you can use the label parameter within the output function to add text before the output area. This is helpful for providing context about what the output represents or for giving additional information to the user.
html import gradio as gr def greet(name): return f"Hello, {name}!" iface = gr.Interface( fn=greet, inputs=gr.Textbox(label="Enter your name:"), outputs=gr.Textbox(label="Greeting:"), title="Greeting App" ) iface.launch() Customizing Text Display with HTML
Using HTML for More Control
For greater control over the appearance and layout of your labels, you can use HTML directly within the label parameter. This allows you to create complex layouts, add styling, or even embed images.
html import gradio as gr def greet(name): return f"Hello, {name}!" iface = gr.Interface( fn=greet, inputs=gr.Textbox(label="Enter your name:
"), outputs=gr.Textbox(label="Greeting:"), title="Greeting App" ) iface.launch() Adding Headings and Titles
Utilizing gr.HTML for Dynamic Text
For larger text blocks or dynamic content, you can utilize gr.HTML to create custom HTML elements within your Gradio interface. This allows you to display headings, paragraphs, images, or any other HTML element you need to enhance the visual appeal and information flow of your application.
html import gradio as gr def greet(name): return f"Hello, {name}!" iface = gr.Interface( fn=greet, inputs=gr.Textbox(label="Enter your name:"), outputs=[ gr.HTML(label="Greeting:
"), gr.Textbox() ], title="Greeting App" ) iface.launch() Adding Text to Your MNIST Example
Let's apply this to a common machine learning example, MNIST digit classification. We'll add labels and headings to make our interface more user-friendly.
html import gradio as gr import tensorflow as tf Load MNIST dataset (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() Preprocess data x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0 Define the model model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) Compile the model model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) Train the model model.fit(x_train, y_train, epochs=5) Create the Gradio interface def predict_digit(image): prediction = model.predict(image.reshape(1, 28, 28)) predicted_digit = tf.math.argmax(prediction).numpy() return f"Predicted digit:
{predicted_digit}
" iface = gr.Interface( fn=predict_digit, inputs=gr.Image(label="Draw a digit:"), outputs=gr.HTML(), title="MNIST Digit Recognition" ) iface.launch() Conclusion
Adding labels and headings to your Gradio interface is crucial for creating user-friendly and informative demos. Whether you need to provide instructions, highlight output, or simply improve the visual appeal of your application, Gradio offers flexible options for incorporating text and headings. Remember to keep your users in mind as you design your interface, and experiment with the techniques we've explored to create the most effective user experience for your machine learning projects.
"The best way to predict the future is to create it." - Peter Drucker
If you're looking for more advanced techniques, you can learn more about how to Use seleniumbase in google colab for automated testing and integration.
Gradio Crash Course - Fastest way to build & share Machine Learning apps
Gradio Crash Course - Fastest way to build & share Machine Learning apps from Youtube.com