当前位置:   article > 正文

1、【gradio】快速开始,构建自己的机器学习的应用_chatinterface dataframe

chatinterface dataframe


先决条件:Gradio 需要 Python 3.8 或更高版本。

Gradio能做什么

与他人分享你的机器学习模型、API或数据科学工作流的最佳方式之一是创建一个交互式应用,让你的用户或同事可以在他们的浏览器中尝试这个演示。

Gradio 允许你构建并分享演示,所有这些都是用 Python 完成的。通常只需几行代码!那么,让我们开始吧。

Hello, World

要使用一个简单的“Hello, World”示例来运行 Gradio,请按照以下三个步骤操作:

  1. 使用 pip 安装 Gradio:
pip install gradio
  • 1
  1. 将下面的代码作为 Python 脚本运行,或在 Jupyter Notebook (或 Google Colab) 中运行:
import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="text", outputs="text")
    
demo.launch()   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

我们将导入的名字缩写为 gr,以便更好地阅读使用 Gradio 的代码。这是一个广泛采用的约定,你应该遵循,以便任何使用你的代码的人都能轻松理解它。

  1. 下面的演示将自动出现在 Jupyter Notebook 中,或者如果从脚本运行,将在 http://localhost:7860 上弹出浏览器:
    Hello
gradio app.py
  • 1

当在本地开发时,如果你想将代码作为 Python 脚本运行,你可以使用 Gradio CLI 来启动应用程序在重新加载模式,这将提供无缝和快速的开发。在自动重新加载指南中了解更多关于重新加载的信息。

注意:你也可以执行python app.py,但它不会提供自动重新加载机制。

Interface类

你会注意到,为了制作演示,我们创建了一个 gr.Interface。这个 Interface 类可以将任何 Python 函数包装成一个用户界面。在上面的例子中,我们看到了一个简单的基于文本的函数,但这个函数可以是从音乐生成器到税务计算器,再到预训练机器学习模型的预测函数。

核心 Interface 类在初始化时需要三个必需的参数:

  • fn: 需要围绕其构建 UI 的函数
  • inputs: 用于输入的组件(例如 “text”、“image” 或 “audio”)
  • outputs: 用于输出的组件(例如 “text”、“image” 或 “label”)

让我们更仔细地看看这些用于提供输入和输出的组件。

组件属性

在前面的示例中,我们看到了一些简单的文本框组件,但是如果你想改变 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

更新

多个输入和输出组件

假设你有一个更复杂的函数,具有多个输入和输出。在下面的例子中,我们定义了一个函数,它接受一个字符串、布尔值和数字,并返回一个字符串和数字。看看你是如何传递一组输入和输出组件的。

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

早上好

你只需将组件放在一个列表中。输入列表中的每个组件按顺序对应于函数的一个参数。输出列表中的每个组件按顺序对应于函数返回的一个值。

一个图片的Example

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

图片的Example
在使用 Image 组件作为输入时,你的函数将接收一个形状为 (height, width, 3) 的 NumPy 数组,其中最后一个维度表示 RGB 值。我们也将以 NumPy 数组的形式返回一个图像。

你还可以通过 type= 关键字参数设置组件使用的数据类型。例如,如果你希望你的函数接受一个图像的文件路径,而不是一个 NumPy 数组,那么输入的 Image 组件可以写成:

gr.Image(type="filepath", shape=...)
  • 1

还要注意,我们的输入 Image 组件带有一个编辑按钮

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/586303
推荐阅读
相关标签