【完全攻略】Gradio:建立机器学习网页APP

目录

  • 前言
  • 一、Gradio介绍以及安装
    • 1-1、Gradio介绍
    • 1-2、安装
  • 二、快速开始(初步了解)
    • 2-1、简单小栗子
    • 2-2、多输入多输出
    • 2-3、简易聊天机器人
  • 三、关键技术
    • 3-1、带有样例的输入
    • 3-2、提示弹窗
    • 3-3、描述内容
    • 3-4、风格
    • 3-5、流式输出
    • 3-6、进度条
    • 3-7、分享APP
  • 总结

前言

Gradio是一个用于构建交互式界面的Python库。它可以帮助您快速创建自定义的Web界面,用于展示和测试机器学习模型、自然语言处理模型、计算机视觉模型等。

一、Gradio介绍以及安装

1-1、Gradio介绍

Gradio

  • Gradio是一个用于构建交互式界面的Python库。它可以帮助您快速创建自定义的Web界面,用于展示和测试机器学习模型、自然语言处理模型、计算机视觉模型等。

  • Gradio使得构建交互式界面变得非常简单,无需编写繁琐的HTML、CSS和JavaScript代码。您可以使用Gradio来创建一个具有输入字段(如文本输入或图像上传)和输出字段(如模型预测结果)的界面,用户可以直接与您的模型进行交互。

  • Gradio支持多种输入和输出类型,包括文本、图像、音频和视频。您可以通过定义回调函数来处理输入,并将输出返回给用户。Gradio还提供了自动化的界面布局和样式,使得界面设计变得简单而直观。

在这里插入图片描述

1-2、安装

安装:Gradio需要python版本为3.8以上

pip install python
pip install gradio

# update
pip install --upgrade gradio -i https://mirror.baidu.com/pypi/simple

二、快速开始(初步了解)

2-1、简单小栗子

小栗子:将会在浏览器自动弹出(地址: http://localhost:7860)

gr.Interface类: 可以使用用户界面包装任何函数

  • fn: 要运行的函数或模型。这个函数接受输入并返回输出。
  • inputs: 输入组件的类型和顺序。可以使用字符串表示组件类型(如"text"、“checkbox”、"slider"等),也可以使用Gradio提供的组件对象(如gr.TextInput()、gr.Checkbox()、gr.Slider()等)。
  • outputs: 输出组件的类型和顺序。同样可以使用字符串或Gradio提供的组件对象表示。
import gradio as gr

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

demo = gr.Interface(fn=greet, inputs="text", outputs="text")

    
if __name__ == "__main__":
    demo.launch()   

输出
在这里插入图片描述

2-2、多输入多输出

注意:输入列表中的每个组件依次对应fn函数中的参数。输出列表中的每个组件都对应于fn函数的返回值,注意按照顺序排列。

import gradio as gr

def greet(name, is_morning, temperature):
    salutation = "Good morning" if is_morning else "Good evening"
    greeting = f"{salutation} {name}. It is {temperature} degrees today"
    celsius = (temperature - 32) * 5 / 9
    return greeting, round(celsius, 2)

# 创建一个Gradio界面的实例。fn参数指定了要运行的函数,inputs参数指定了输入组件的类型和顺序,outputs参数指定了输出组件的类型和顺序。在这里,输入组件依次是文本输入、复选框和滑块,输出组件依次是文本输出和数字输出。
demo = gr.Interface(
    fn=greet,
    # 输入部分为Text组件,checkbox组件、滑块。
    inputs=["text", "checkbox", gr.Slider(0, 100)],
    outputs=["text", "number"],
)
demo.launch()

输出
在这里插入图片描述

2-3、简易聊天机器人

gr.ChatInterface: 专门为聊天机器人UI设计的接口。该接口包装了一个函数,接受message和history作为参数,返回字符串作为相应。title作为标题。

  • message:用户输入的信息
  • history:对话历史
import random
import gradio as gr

def random_response(message, history):
    return random.choice(["Yes", "No"])

demo = gr.ChatInterface(random_response, title='chatgpt')

demo.launch()

三、关键技术

3-1、带有样例的输入

概述:提供输入数据样例,主要是通过examples关键字,提供一个嵌套列表。

"""
这段代码使用Gradio库创建了一个简单的计算器应用。应用中定义了一个名为calculator的函数,它接受三个参数:num1(第一个数字)、operation(操作符)和num2(第二个数字)。根据操作符的不同,函数会执行相应的计算操作,包括加法、减法、乘法和除法。如果除法操作中的第二个数字为零,会抛出一个gr.Error异常。
"""
import gradio as gr
#from foo import BAR
#
def calculator(num1, operation, num2):
    if operation == "add":
        return num1 + num2
    elif operation == "subtract":
        return num1 - num2
    elif operation == "multiply":
        return num1 * num2
    elif operation == "divide":
        if num2 == 0:
            raise gr.Error("Cannot divide by zero!")
        return num1 / num2

demo = gr.Interface(
    calculator,
    [
        "number", 
        gr.Radio(["add", "subtract", "multiply", "divide"]),
        "number"
    ],
    "number",
    examples=[
        [45, "add", 3],
        [3.14, "divide", 2],
        [144, "multiply", 2.5],
        [0, "subtract", 1.2],
    ],
    title="Toy Calculator",
    description="Here's a sample toy calculator. Allows you to calculate things like $2+2=4$",
)

demo.launch()

输出
在这里插入图片描述

3-2、提示弹窗

提示弹窗:当遇到错误时以弹窗的形式弹出,如上边例子中除以0的时候会引发的错误(gr.Error(“Cannot divide by zero!”)),也可以使用gr.Warning 或者 gr.Info 来告警。
在这里插入图片描述
在这里插入图片描述

3-3、描述内容

概述:接口中的一些参数可以帮助理解APP,如下方图片,分别对应三个参数的内容。

  • title:标题
  • description: 描述性内容
  • article:最下方的描述

在这里插入图片描述

3-4、风格

概述:选择界面风格

demo = gr.Interface(..., theme=gr.themes.Monochrome())

输出
在这里插入图片描述

3-5、流式输出

概述:流式输出文字,一个个输出,而不是全部输出,这里用到了关键字yield。这里我们使用time.sleep(0.1)来手动的让每个文字输出有间隔。

import random
import time

import gradio as gr


def random_response(message, history):
    responses = [
        "谢谢您的留言!",
        "非常有趣!",
        "我不确定该如何回答。",
        "请问还有其他问题吗?",
        "我会尽快回复您的。",
        "很高兴能与您交流!",
    ]

    # 逐步生成回复
    responses = random.choice(responses)
    responses_so_far = ""
    for char in responses:
        responses_so_far += char
        time.sleep(0.1)
        yield responses_so_far


demo = gr.ChatInterface(random_response, title='ㄣ知冷煖★')

demo.launch()

输出
在这里插入图片描述

3-6、进度条

概述:Gradio支持创建自定义进度条,只需要在方法中添加progress=gr.Progress(),即可,可以直接通过调用实例并赋值来更新进度条,如progress(0.05),也可以使用其中的tqdm方法来跟踪迭代更新进度。

import gradio as gr
import time

def slowly_reverse(word, progress=gr.Progress()):
    progress(0, desc="Starting")
    time.sleep(1)
    progress(0.05)
    new_string = ""
    for letter in progress.tqdm(word, desc="Reversing"):
        time.sleep(0.25)
        new_string = letter + new_string
    return new_string

demo = gr.Interface(slowly_reverse, gr.Text(), gr.Text())

demo.launch()

输出
在这里插入图片描述

3-7、分享APP

概述:Gradio样例可以通过设置share=True来让他人访问。有访问期限。其他方案

demo.launch(share=True)

参考文献
Gradio文档

总结

年年岁岁花相似,岁岁年年人不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/171960.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

个人如何进行深度复盘?这6大高效的复盘模型,让你的年终总结如虎添翼!

一年之计在于春,一日之计在于晨,而一年的收获与成长,在于这个年终的深度复盘。自我复盘,是对过去一年生活、工作、学习的反思和总结,能帮助我们提炼经验,发现不足,规划未来,以便更好…

利用AlphaMissense准确预测蛋白质组范围内的错义变体效应

Editor’s summary 蛋白质中单个氨基酸的变化有时影响不大,但通常会导致蛋白质折叠、活性或稳定性方面的问题。只有一小部分变体进行了实验研究,但有大量的生物序列数据适合用作机器学习方法的训练数据。程等人开发了AlphaMissense,这是一种…

动捕设备如何推动线下活动以虚拟主持人创新升级互动形式

随着元宇宙概念兴起,虚拟主持人结合全身动捕设备可以依托大屏、全息等形式直观呈现于线下活动,通过动捕设备实时驱动虚拟主持人,将现实活动场景与虚拟相连接,让活动以科技感、多元化的形式呈现,给活动参与者一种新的视…

redis之高可用

(一)redis之高可用 1、在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99.9% 2、redis的高可用的含义更加广泛,正常服务是指标之一,数据容量的扩展、数据的安全性 3、在r…

基于C#实现协同推荐 SlopeOne 算法

一、概念 相信大家对如下的 Category 都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为我们服务,在网络上我们需要同样的一种替代物,如果简简单单的在数据库里面去捞&am…

【ISP】噪声--sensor(2)

1.热噪声 也叫KT/C噪声,或者叫暗电流噪声。电子的热运动的导致,温度上升,噪声增大。 2.FPN固定模式噪声 由于每个像素点的元器件制造的会有偏差,也就是这些器件的工作参数相对理论值的漂移就构成一种固定模式噪声。 3.光子散粒噪…

No appropriate protocol -- Mysql

DataGrip连接mysql报以下异常信息: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) The following required algorithms might be disabled: SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5wi…

网站为什么一定要安装SSL证书

随着互联网的普及和发展,网络安全问题日益凸显。在这个信息爆炸的时代,保护用户隐私和数据安全已经成为各大网站和企业的首要任务。而SSL证书作为一种网络安全技术,已经成为网站必备的安全工具。那么,为什么网站一定要安装SSL证书…

C编译流程

1.预处理 hello.c 经过预处理得到 hello.i gcc -E hello.c -o hello.i -E的含义:说明这是一个预处理操作 生成预处理文件(.i) 预处理阶段做了什么事: 1.1 头文件展开 我们发现 原先只有几行的hello.c变成了上千行的hello.i 实际上 预处理完成的是 将头…

二百零五、Flume——数据流监控工具Ganglia单机版安装以及使用Ganglia监控Flume任务的数据流(附流程截图)

一、目的 Flume采集Kafka的数据流需要实时监控,这时就需要用到监控工具Ganglia 二、Ganglia简介 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 (一)第一部分:gmond gmond(Ganglia Monitoring Daemon)…

.Net6 Api Swagger配置

1、定义个Swagger版本&#xff08;组&#xff09;的枚举 namespace WebApp.Enums {/// <summary>/// api版本枚举/// </summary>public enum ApiVersion{/// <summary>/// v1版本/// </summary>v1 1,/// <summary>/// v2版本/// </summary&…

深度学习之基于Django+Tensorflow动物识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Django和TensorFlow的动物识别系统可以被设计成能够使用深度学习算法自动识别上传的图像中的动物种类&#xff…

【AICFD案例教程】多孔介质歧管流动传热

AICFD是由天洑软件自主研发的通用智能热流体仿真软件&#xff0c;用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程&#xff0c;帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

Linux C 网络编程概述

网络编程 计算机网络概述分类网络体系结构通信协议通信流程网络通信帧格式以太网帧格式分析ARP 协议分析IP 数据报分析IP分类IP 分配子网掩码 TCP 段分析 TCP三次握手协议 ⭐TCP四次挥手协议 ⭐ TCP编程基于 TCP 客户端编程-步骤说明基于 TCP 服务器端编程-步骤说明基于 TCP 服…

中间件安全:Apache Tomcat 弱口令.(反弹 shell 拿到服务器的最高控制权.)

中间件安全&#xff1a;Apache Tomcat 弱口令. Tomcat 是 Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的 Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。 通过弱口令登录后台&#xff0c;部署 war 包…

【狂神说Java】redis

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;【狂神说Java】 &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c…

Linux02 VIM编辑器

Linux02 VIM编辑器 基本上 vi/vim 共分为三种模式&#xff0c; 分别是命令模式&#xff08;Command mode&#xff09;&#xff0c;输入模式&#xff08;Insert mode&#xff09;和底线命令模式&#xff08;Last line mode&#xff09;。 三种状态进行切换 插入模式&#xff1a…

如何优雅的避免空指针异常

文章目录 1.数据准备2.实战&#xff1a;获取用户所在的城市2.1.直接获取&#xff1b;容易出现空指针异常。2.2.使用if-else判断&#xff1b;避免了出现空指针的问题&#xff0c;但是代码结构层次嵌套多&#xff0c;不美观2.3.使用工具类美化一下if判断代码2.4.使用Optional解决…

html实现计算器源码

文章目录 1.设计来源1.1 主界面1.2 计算效果界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134532725 html实现计算器源码&#xff0c;计算器源码&#xff0c;简易计…

2022最新版-李宏毅机器学习深度学习课程-P51 BERT的各种变体

之前讲的是如何进行fine-tune&#xff0c;现在讲解如何进行pre-train&#xff0c;如何得到一个pre train好的模型。 CoVe 其实最早的跟预训练有关的模型&#xff0c;应该是CoVe&#xff0c;是一个基于翻译任务的一个模型&#xff0c;其用encoder的模块做预训练。 但是CoVe需要…