【小沐學Python】Python實現WebUI網頁圖表(gradio)

文章目錄

  • 1、簡介
  • 2、安裝
  • 3、基本測試
    • 3.1 入門代碼
    • 3.2 組件屬性
    • 3.3 多個輸入和輸出組件
    • 3.4 圖像示例
    • 3.5 聊天機器人
    • 3.6 模塊:更靈活、更可控
    • 3.7 進度條
  • 結語

1、簡介

https://www.gradio.app/

Gradio是用友好的網絡界面演示機器學習模型的最快方法,因此任何人都可以在任何地方使用它!

Gradio與他人共享機器學習模型、API或數據科學工作流程的最佳方法之一是創建一個交互式應用程序,允許您的用戶或同事在瀏覽器中嘗試演示。

Gradio允許您構建演示并共享它們,所有這些都使用Python。通常只需幾行代碼!讓我們開始吧。
在這里插入圖片描述

使用gradio,只需在原有的代碼中增加幾行,就能自動化生成交互式web頁面,并支持多種輸入輸出格式,比如圖像分類中的圖>>標簽,超分辨率中的圖>>圖等。

2、安裝

Gradio requires Python 3.8 or higher, that’s all!

pip install gradio

在這里插入圖片描述

3、基本測試

3.1 入門代碼

Run the code below as a Python script or in a Jupyter Notebook (or Google Colab):

import gradio as grdef greet(name):return "小沐: " + name + "!"demo = gr.Interface(fn=greet, inputs="text", outputs="text")if __name__ == "__main__":demo.launch(show_api=False)   

瀏覽器訪問:

http://127.0.0.1:7860/

在這里插入圖片描述
在本地開發時,如果要將代碼作為 Python 腳本運行,可以使用 Gradio CLI 以重新加載模式啟動應用程序,這將提供無縫和快速的開發。

gradio test.py

在這里插入圖片描述
注意:你也可以這樣做,但它不會提供自動重新加載機制。python test.py

3.2 組件屬性

假設您要自定義輸入文本字段,例如,您希望它更大并具有文本占位符。

import gradio as grdef greet(name):return "小沐: " + name + "!"demo = gr.Interface(fn=greet,inputs=gr.Textbox(lines=2, placeholder="Name Here..."),outputs="text",
)
demo.launch()

在這里插入圖片描述

3.3 多個輸入和輸出組件

假設您有一個更復雜的函數,具有多個輸入和輸出。在下面的示例中,我們定義了一個函數,該函數接受字符串、布爾值和數字,并返回字符串和數字。看看如何傳遞輸入和輸出組件列表。

import gradio as grdef 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 / 9return greeting, round(celsius, 2)demo = gr.Interface(fn=greet,inputs=["text", "checkbox", gr.Slider(0, 100)],outputs=["text", "number"],
)
demo.launch()

在這里插入圖片描述

3.4 圖像示例

Gradio 支持多種類型的組件,例如 、 、 或 。讓我們嘗試一個圖像到圖像功能來感受這些!

import numpy as np
import gradio as grdef 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_imgdemo = gr.Interface(sepia, gr.Image(), "image")
demo.launch()

在這里插入圖片描述

3.5 聊天機器人

Gradio 包含一個高級類,它類似于 ,但專為聊天機器人 UI 設計。該類還包裝一個函數,但此函數必須具有特定的簽名。該函數應該接受兩個參數:然后(參數可以命名為任何名稱,但必須按此順序命名).

gr.ChatInterfacegr.Interfacegr.ChatInterfacemessagehistory:

  • message:a 表示用戶的輸入str
  • history:a 表示在此之前的對話。每個內部列表由兩個表示一對組成:。listliststr[user input, bot response]
import random
import gradio as grdef random_response(message, history):return random.choice(["Yes", "No"])demo = gr.ChatInterface(random_response)demo.launch()

在這里插入圖片描述

3.6 模塊:更靈活、更可控

Gradio提供了兩種構建應用程序的方法:

  1. Interface 和 ChatInterface,它們為創建我們目前一直在討論的演示提供了高級抽象。
  2. Blocks,一個低級 API,用于設計具有更靈活布局和數據流的 Web 應用程序。Blocks 允許您執行諸如具有多個數據流和演示、控制組件在頁面上的顯示位置、處理復雜的數據流(例如,輸出可以作為其他函數的輸入)以及基于用戶交互更新組件的屬性/可見性等操作——所有這些都在 Python 中。
import gradio as grdef greet(name):return "Hello " + name + "!"with gr.Blocks() as demo:name = gr.Textbox(label="Name")output = gr.Textbox(label="Output Box")greet_btn = gr.Button("Greet")greet_btn.click(fn=greet, inputs=name, outputs=output, api_name="greet")demo.launch()

在這里插入圖片描述
這里有一個應用程序,可以讓你體驗到什么是可能的:Blocks

import numpy as np
import gradio as grdef flip_text(x):return x[::-1]def flip_image(x):return np.fliplr(x)with gr.Blocks() as demo:gr.Markdown("Flip text or image files using this demo.")with gr.Tab("Flip Text"):text_input = gr.Textbox()text_output = gr.Textbox()text_button = gr.Button("Flip")with gr.Tab("Flip Image"):with gr.Row():image_input = gr.Image()image_output = gr.Image()image_button = gr.Button("Flip")with gr.Accordion("Open for More!"):gr.Markdown("Look at me...")text_button.click(flip_text, inputs=text_input, outputs=text_output)image_button.click(flip_image, inputs=image_input, outputs=image_output)demo.launch()

在這里插入圖片描述

3.7 進度條

import gradio as gr
import timedef 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_stringreturn new_stringdemo = gr.Interface(slowly_reverse, gr.Text(), gr.Text())demo.launch()

在這里插入圖片描述

結語

如果您覺得該方法或代碼有一點點用處,可以給作者點個贊,或打賞杯咖啡;╮( ̄▽ ̄)╭
如果您感覺方法或代碼不咋地//(ㄒoㄒ)//,就在評論處留言,作者繼續改進;o_O???
如果您需要相關功能的代碼定制化開發,可以留言私信作者;(????)
感謝各位大佬童鞋們的支持!( ′ ▽′ )ノ ( ′ ▽′)っ!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211406.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211406.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211406.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【T+】暢捷通T+軟件安裝過程中停留在:正在配置產品位置或進度80%位置。

【問題描述】 暢捷通T軟件在安裝過程中, 進度條一直停留在【正在配置產品…】位置。 【解決方法】 打開【任務管理器】,想必這個如何打開,大家應該都會。 在【進程】中找到【DBConfig.exe】或者【Ufida.T.Tool.SM.DBConfig.exe】進程并結束…

TS條件類型、斷言及名義類型

文章將討論處理類型的幾個高級模式,包括模擬名義類型的類型烙印、利用條件類型的分配性質在類型層面操作類型,以及安全地擴展原型。 1 函數類型 TS在推導元組的類型時會放寬要求,推導出的結果盡量寬泛,不在乎元組的長度和各位置…

Spring Cloud Gateway使用和配置

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技術開發的網關,Spring Cloud Gateway旨在為微服務架構提供一種簡單而有效的統一的API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態系中的網關&#xff…

Linux 基礎IO

文章目錄 前言基礎IO定義系統IO接口文件描述符重定向原理緩沖區刷新 前言 要知道每個函數/接口的全部參數和返回值建議去官網或者直接在Linux的man手冊中查,這不是復制粘貼函數用法的文章。 C語言文件讀寫介紹鏈接 基礎IO定義 IO是Input/Output的縮寫&#xff0c…

optional

參考資料: Java8 Optional用法和最佳實踐 - 掘金 一、背景 根據Oracle文檔,Optional是一個容器對象,可以包含也可以不包含非null值。Optional在Java 8中引入,目的是解決 NullPointerExceptions的問題。本質上,Optio…

2024年網絡安全競賽-網站滲透

網站滲透 (一)拓撲圖 1.使用滲透機對服務器信息收集,并將服務器中網站服務端口號作為flag提交; 使用nmap工具對靶機進行信息收集 2.使用滲透機對服務器信息收集,將網站的名稱作為flag提交; 訪問頁面即可 3.使用滲透機對服務器滲透,將可滲透頁面的名稱作為flag提交…

Python:核心知識點整理大全5-筆記

目錄 2. 使用方法pop()刪除元素 3. 彈出列表中任何位置處的元素 4. 根據值刪除元素 3 章 列表簡介 3.3 組織列表 3.3.1 使用方法 sort()對列表進行永久性排序 3.3.2 使用函數 sorted()對列表進行臨時排序 3.3.3 倒著打印列表 3.3.4 確定列表的長度 3.5 小結 2. 使用方…

軟件測試:測試用例八大要素模板

一、通用測試用例八要素 1、用例編號; 2、測試項目; 3、測試標題; 4、重要級別; 5、預置條件; 6、測試輸入; 7、操作步驟; 8、預期輸出 二、具體分析通用測試用例八要素 1、用例編號 一般是數字…

[NAND Flash 2.1] NAND Flash 閃存改變了現代生活

依公知及經驗整理&#xff0c;原創保護&#xff0c;禁止轉載。 專欄 《深入理解NAND Flash》 <<<< 返回總目錄 <<<< ? 1989年NAND閃存面世了&#xff0c;它曾經且正在改變了我們的日常生活。 NAND 閃存發明之所以偉大&#xff0c;是因為&#xff0c…

一個CV算法工程師在技術方面的小反思

極市導讀 正如作者所說,做一個算法工程師最重要的素質是在海量的算法方案中理解,吃透那些真正的干貨,然后不斷在實踐中去驗證,并總結吸收到自己的腦子里。本文記錄了作者在算法工程師這個崗位上一年后總結的一些關于技術上的經驗總結。>>加入極市CV技術交流群,走在計…

怎樣解決編譯后的exe文件運行時產生的錯誤?

編譯后的exe文件運行時&#xff0c;錯誤如下錯誤提示&#xff1a;Traceback (most recent call last):File "pd.py", line 1, in <module>from pdf2docx import parse ModuleNotFoundError: No module named pdf2docx 怎樣解決&#xff1f; 這個錯誤提示表明…

java數據結構面試題

1.棧和隊列的共同特點是&#xff08;只允許在端點處插入和刪除元素&#xff09; 4.棧通常采用的兩種存儲結構是&#xff08;線性存儲結構和鏈表存儲結構&#xff09; 5.下列關于棧的敘述正確的是&#xff08;D&#xff09; A.棧是非線性結構 B.棧是一種樹狀結構 C.棧具有先進先…

蘋果OS X系統介紹(Mac OS --> Mac OS X --> OS X --> macOS)

文章目錄 OS X系統介紹歷史與版本架構內核與低級系統圖形&#xff0c;媒體和用戶界面應用程序和服務 特性用戶友好強大的命令行安全性集成與互操作性 總結 OS X系統介紹 OS X是由蘋果公司為Macintosh計算機系列設計的基于UNIX的操作系統。其界面友好&#xff0c;易于使用&…

使用 nohup java - jar 不輸出日志

要在使用nohup java -jar命令時不輸出日志&#xff0c;可以將標準輸出和標準錯誤輸出重定向到特殊設備文件/dev/null。這樣做將會丟棄所有的輸出。 以下是在Linux中使用nohup java -jar命令并禁止輸出日志的示例&#xff1a; 復制代碼 nohup java -jar your-application.jar …

Python可視化(二)——Seaborn

Seaborn是一個基于matplotlib的可視化庫&#xff0c;其為用戶提供了高級接口&#xff0c;并且該工具還深度集成了pandas的數據結構。并且該工具該集成了很多數據庫&#xff0c;配合官網給出的代碼示例&#xff0c;可以更方便的進行操作。 官網對它的介紹為&#xff1a; Seabo…

Servlet學習筆記

簡介 瀏覽器請求處理流程&#xff1a;瀏覽器發請求 > 服務器tomcat( > 應用程序 ( > servlet) ) Servlet應用的三大作用域&#xff1a;request&#xff0c;session&#xff0c;application tomcat存放項目的層級結構 注釋&#xff1a;servlet原引用包名 javax.serv…

卡爾曼濾波器

歡迎訪問我的博客首頁。 卡爾曼濾波器 1. 參考 1. 參考 卡爾曼濾波器&#xff0c;B 站&#xff0c;2020。擴展卡爾曼濾波器&#xff0c;CSDN&#xff0c;2023。

Git的安裝以及SSH配置

前言 近期工作需要&#xff0c;所以版本管理工具要用到Git&#xff0c;某些操作需要ssh進行操作&#xff0c;在某次操作中遇到&#xff1a;git bash報錯&#xff1a;Permission denied, please try again。經排查是ssh沒有配置我的key&#xff0c;所以就借著這篇文章整理了一下…

WorkPlus即時通訊,讓溝通零障礙!企業協作更高效

如今&#xff0c;隨著信息技術的快速發展&#xff0c;企業對于高效溝通和即時協作的需求也日益增長。在這個數字化時代&#xff0c;WorkPlus作為一款領先的企業級移動辦公平臺&#xff0c;以其強大的即時通訊功能和卓越的用戶體驗&#xff0c;成功為企業打造了高效溝通的新時代…

input = torch.randn(20, 2, 11, 11, 32)輸出形式

input torch.randn(20, 2, 11, 11, 32) m torch.nn.AdaptiveAvgPool3d((1,1, 32)) xm(input) print(x.shape) 結果&#xff1a; 也就是不用管批次和通道數