我们无法用创造问题的相同思维来解决问题——阿尔伯特·爱因斯坦

如果您曾经构建过机器学习模型,您可能会觉得,这很酷,但其他人怎么能看到它有多酷,模型部署是机器学习的一部分,无需付费尽可能多的关注。

那么在本文中,我将向您介绍一个新工具,该工具将帮助您为您的机器学习模型生成一个 Web 应用程序,您当然可以与其他人分享以进行试用。

我将使用 scikit-learn(不是 TF,抱歉😒)构建一个简单的神经网络模型,并使用 Gradio 为模型创建一个 GUI(这是我谈到的新的酷工具)。

让我们开始

什么是渐变

下面是梯度库的标志

渐变覆盖.png

*图像学分:渐变*

根据Gradio 网站,Gradio 允许您围绕 TensorFlow 或 PyTorch 模型甚至任意 Python 函数快速创建可定制的 UI 组件。不是很丰富的信息ei😅。

如果你曾经使用过像 Tkinter 这样的 Python GUI 库,那么 Gradio 就是这样。

Gradio 是一个 GUI 库,可让您为机器学习模型创建可自定义的 GUI 组件。

现在我们了解 Gradio 是什么

先决条件

让您成功完成本教程

  • 你必须安装python

让我们开始建设

您可以在此处查看项目的 GitHub 存储库

让我们开始

安装需要的包 Packages

让我们安装所需的软件包

pip install sklearn

进入全屏模式 退出全屏模式

pip install pandas

进入全屏模式 退出全屏模式

pip install numpy

进入全屏模式 退出全屏模式

pip install gradio

进入全屏模式 退出全屏模式

获取我们的数据

我们的数据将在. CSV 格式。

可以点击这里的获取数据

导入包

我们将导入所需的包

import numpy as np

import pandas as pd

import gradio as gr

进入全屏模式 退出全屏模式

接下来,我们将过滤警告,以便我们看不到它们。

import warnings

warnings.filterwarnings('ignore')

进入全屏模式 退出全屏模式

导入数据

接下来,我们将导入我们的数据

data = pd.read_csv('diabetes.csv')

进入全屏模式 退出全屏模式

现在让我们看一下我们的数据集的一些预览

data.head()

进入全屏模式 退出全屏模式

让我们看看数据集中的特征列

print (data.columns)

进入全屏模式 退出全屏模式

获取我们的变量

接下来,我们得到我们的 X 和 Y 变量

x = data.drop(['Outcome'], axis=1)

y = data['Outcome']

进入全屏模式 退出全屏模式

拆分数据

现在我们将使用 scikit-learn 的内置 train_test_split 函数拆分我们的数据。

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x,y)

进入全屏模式 退出全屏模式

### 缩放我们的数据

接下来,我们将使用 scikit-learn 的内置 StandardScaler 对象来缩放我们的数据。

from sklearn.preprocessing import StandardScaler

#instantiate StandardScaler object
scaler = StandardScaler()

#scale data
x_train_scaled = scaler.fit_transform(x_train)

x_test_scaled = scaler.fit_transform(x_test)

进入全屏模式 退出全屏模式

在上面的代码中,我们使用通过 scikit-learn 提供给我们的 StandardScaler 对象来缩放我们的数据。要了解有关缩放的更多信息及其完成原因,请单击此处的

实例化和训练模型

在本节中,我们将创建和训练我们的模型。我们要做的模型将是一个多层感知器分类器,一个内置在 scikit-learn 中的神经网络。

#import model object
from sklearn.neural_network import MLPClassifier
model =  MLPClassifier(max_iter=1000,  alpha=1)

#train model on training data
model.fit(x_train_scaled, y_train)

#getting model performance on test data
print("accuracy:", model.score(x_test_scaled, y_test))

进入全屏模式 退出全屏模式

为 Gradio 创建函数

现在是有趣的部分。在这里,我们将创建一个函数,该函数将接收我们的模型训练过的数据集的特征,并将其作为数组传递给我们的模型进行预测。然后我们将基于该功能构建我们的 gradio web 应用程序。

要理解我们为什么要写一个函数,首先要明白 gradio 是基于函数为我们的机器学习模型构建 GUI 组件的。该函数为 gradio 提供了一种从用户获取输入并将其传递给 ML 模型的方法,ML 模型将对其进行处理,然后将其传递回 gradio,然后将结果传递出去。

让我们写...

首先,我们将获得特征列,然后将其传递给我们的函数。

#geting our columns

print(data.columns)

进入全屏模式 退出全屏模式

现在我们将创建我们的函数。

def diabetes(Pregnancies, Glucose, Blood_Pressure, SkinThickness, Insulin, BMI, Diabetes_Pedigree, Age):
#turning the arguments into a numpy array  

 x = np.array([Pregnancies,Glucose,Blood_Pressure,SkinThickness,Insulin,BMI,Diabetes_Pedigree,Age])

  prediction = model.predict(x.reshape(1, -1))

  return prediction

进入全屏模式 退出全屏模式

在上面的代码中,我们将数据中的特征列作为参数传递给一个函数,我们命名为_diabetes_。然后我们将参数转换为一个 numpy 数组,然后将其传递给我们的模型进行预测,最后我们返回模型的预测结果。

创建我们的 Gradio 接口

现在我们将使用 Gradio 创建我们的 Web App 界面

outputs = gr.outputs.Textbox()

app = gr.Interface(fn=diabetes, inputs=['number','number','number','number','number','number','number','number'], outputs=outputs,description="This is a diabetes model")

进入全屏模式 退出全屏模式

我们在上面做的第一件事是创建一个名为 outputs 的变量,它保存我们模型结果的 GUI 组件。我们模型的预测结果将在文本框中输出。

然后我们实例化 Gradio 接口对象并传入我们之前的 diabetes 函数。然后我们生成了 Inputs GUI 组件,然后我们告诉收音机需要 8 个数字形式的输入。

输入代表我们数据集中存在的特征列,与我们传递给 diabetes 函数的 8 个特征列名称相同。

然后我们将之前的输出变量传递给对象中存在的输出参数。

最后,我们将 web 应用程序的描述传递给 description 参数。

启动 Gradio Web 应用程序

现在我们要启动我们的 Gradio 网络应用程序。

app.launch()

进入全屏模式 退出全屏模式

注意: 如果您从该 e 命令行作为脚本启动 Gradio 应用程序,您将获得一个本地主机链接,然后您将复制并粘贴到我们的浏览器中以查看您的 Web 应用程序。

如果您从 jupyter notebook 启动应用程序,您将在运行单元时看到应用程序的实时预览,并且还会为您提供一个链接。

托管和共享您的 Web 应用程序

如果您想共享您的网络应用程序,您只需将 shareu003dTrue 作为启动对象中的参数。

#To provide a shareable link
app.launch(share=True)

进入全屏模式 退出全屏模式

然后将为您提供一个带有 .gradio 扩展名的链接。但是这个可共享的链接仅持续 24 小时,并且仅在您的系统正在运行时才会持续。因为 Gradio 只是在您的系统上托管 Web 应用程序。

简而言之,要使您的链接正常工作,您的系统必须打开,因为 gradio 使用您的系统来托管 Web 应用程序,并且一旦您的系统关闭。服务器连接被切断,你得到一个 500😅。

幸运的是,Gradio 还为您提供了一种永久托管模型的方法。但该服务是基于订阅的,因此您必须每月支付 7 美元才能访问它。永久托管超出了本文的范围(部分原因是作者破产了😅)。但是如果你对它感兴趣,点击这里

重要链接

  • 渐变网站

  • Gradio 文档

  • Gradio on GitHub

总结

Gradio 库真的很酷,它有助于解决困扰机器学习社区的一个巨大问题,即模型部署。

90% 的机器学习模型没有部署,Gradio 正在努力解决这个问题。

它还可以作为初学者和专家展示他们的模型并在现实生活中测试模型的一种方式。

Gradio Library 不会出错。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐