赞
踩
与他人分享你的机器学习模型、API或数据科学工作流的最佳方式之一是创建一个交互式应用,让你的用户或同事可以在他们的浏览器中尝试这个演示。
Gradio 允许你构建并分享演示,所有这些都是用 Python 完成的。通常只需几行代码!那么,让我们开始吧。
要使用一个简单的“Hello, World”示例来运行 Gradio,请按照以下三个步骤操作:
pip install gradio
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
我们将导入的名字缩写为 gr,以便更好地阅读使用 Gradio 的代码。这是一个广泛采用的约定,你应该遵循,以便任何使用你的代码的人都能轻松理解它。
gradio app.py
当在本地开发时,如果你想将代码作为 Python 脚本运行,你可以使用 Gradio CLI 来启动应用程序在重新加载模式,这将提供无缝和快速的开发。在自动重新加载指南中了解更多关于重新加载的信息。
注意:你也可以执行python app.py,但它不会提供自动重新加载机制。
你会注意到,为了制作演示,我们创建了一个 gr.Interface。这个 Interface 类可以将任何 Python 函数包装成一个用户界面。在上面的例子中,我们看到了一个简单的基于文本的函数,但这个函数可以是从音乐生成器到税务计算器,再到预训练机器学习模型的预测函数。
核心 Interface 类在初始化时需要三个必需的参数:
让我们更仔细地看看这些用于提供输入和输出的组件。
在前面的示例中,我们看到了一些简单的文本框组件,但是如果你想改变 UI 组件的外观或行为怎么办?
假设你想自定义输入文本字段 —— 例如,你想让它更大并且有一个文本占位符。如果我们使用 Textbox 的实际类而不是使用字符串快捷方式,你可以通过组件属性获得更多的定制化选项。
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(
fn=greet,
inputs=gr.Textbox(lines=2, placeholder="在这里输入名字..."),
outputs="text",
)
demo.launch()
假设你有一个更复杂的函数,具有多个输入和输出。在下面的例子中,我们定义了一个函数,它接受一个字符串、布尔值和数字,并返回一个字符串和数字。看看你是如何传递一组输入和输出组件的。
import gradio as gr
def greet(name, is_morning, temperature):
salutation = "早上好" if is_morning else "晚上好"
greeting = f"{salutation} {name}. 今天温度为 {temperature}"
celsius = (temperature - 32) * 5 / 9
return greeting, round(celsius, 2)
demo = gr.Interface(
fn=greet,
inputs=["text", "checkbox", gr.Slider(0, 100)],
outputs=["text", "number"],
)
demo.launch()
你只需将组件放在一个列表中。输入列表中的每个组件按顺序对应于函数的一个参数。输出列表中的每个组件按顺序对应于函数返回的一个值。
Gradio 支持许多类型的组件,例如 Image、DataFrame、Video 或 Label。让我们尝试一个图像到图像的函数,以便对这些组件有个感觉!
import numpy as np
import gradio as gr
def sepia(input_img):
sepia_filter = np.array([
[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]
])
sepia_img = input_img.dot(sepia_filter.T)
sepia_img /= sepia_img.max()
return sepia_img
demo = gr.Interface(sepia, gr.Image(shape=(200, 200)), "image")
demo.launch()
在使用 Image 组件作为输入时,你的函数将接收一个形状为 (height, width, 3) 的 NumPy 数组,其中最后一个维度表示 RGB 值。我们也将以 NumPy 数组的形式返回一个图像。
你还可以通过 type= 关键字参数设置组件使用的数据类型。例如,如果你希望你的函数接受一个图像的文件路径,而不是一个 NumPy 数组,那么输入的 Image 组件可以写成:
gr.Image(type="filepath", shape=...)
还要注意,我们的输入 Image 组件带有一个编辑按钮
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。