keras安装_代码详解:构建一个简单的Keras+深度学习REST API

在本教程中,我们将介绍一个简单的方法来获取Keras模型并将其部署为REST API。本文所介绍的示例将作为你构建自己的深度学习API的模板/起点——你可以扩展代码,根据API端点的可伸缩性和稳定性对其进行定制。

a6353bdf4c03fe396293f3dcc1079021.png

具体而言,我们将了解:

· 如何(以及如何不)将Keras模型加载到内存中,以便有效地进行推理

· 如何使用Flask web框架为我们的API创建端点

· 如何使用我们的模型进行预测,用JSON-ify转换它们,并将结果反馈到客户端

· 如何使用cURL和Python来调用我们的Keras REST API

在本教程结束时,你将能很好地理解创建Keras REST API所需的组件(以最简单的形式)。

请随意使用本指南中提供的代码作为你自己的深度学习REST API起点。

4a76533a045cf065ec4cf619c5207f4f.png

配置开发环境

假设Keras已经配置并安装在你的机器上。如果没有,请确保使用官方安装说明安装Keras(https://keras.io/#installation)。

然后,需要安装Flask (http://flask.pocoo.org/)(及其相关的依赖项),一个Python web框架,这样就可以构建API端点了。还需要请求(http://docs.python-requests.org/en/master/),这样就可以使用API了。

有关的pip安装命令如下:

$ pip install flask gevent requests pillow

4a76533a045cf065ec4cf619c5207f4f.png

构建你的Keras REST API

Keras REST API独立于一个名为run_keras_server.py的文件中。为了简单起见,我们将安装保存在一个文件中——安装启用也可以很容易地模块化。

在 run_keras_server.py中,你会发现三个函数,即:

· load_model:用于加载训练好的Keras模型,并为推理做准备。

· prepare_image:这个函数在通过我们的网络进行预测之前对输入图像进行预处理。如果你没有使用图像数据,则可能需要考虑将名称更改为更通用的prepare_datapoint,并应用一些可能需要的缩放/标准化。

· predict:API的实际端点可以将请求中的输入数据分类,并将结果反馈给客户端。

# import the necessary packagesfrom keras.applications import ResNet50from keras.preprocessing.image import img_to_arrayfrom keras.applications import imagenet_utilsfrom PIL import Imageimport numpy as npimport flaskimport io

# initialize our Flask application and the Keras modelapp = flask.Flask(__name__)model = None

第一个代码片段处理导入了所需的程序包,并且对Flask应用程序和模型进行了初始化。

在此,我们定义load_model函数:

def load_model():

# load the pre-trained Keras model (here we are using a model

# pre-trained on ImageNet and provided by Keras, but you can

# substitute in your own networks just as easily)

global model

model = ResNet50(weights="imagenet")

顾名思义,这个方法负责将我们的架构实例化,并从磁盘加载权重。

为了简单起见,将使用在ImageNet数据集上预先训练过的ResNet50架构。

如果你正在使用自定义模型,则需要修改此函数以从磁盘加载架构+权重。

在对任何来自客户端的数据进行预测之前,首先需要准备并预处理数据:

def prepare_image(image, target):

# if the image mode is not RGB, convert it

if image.mode != "RGB":

image = image.convert("RGB")

# resize the input image and preprocess it

image = image.resize(target)

image = img_to_array(image)

image = np.expand_dims(image, axis=0)

image = imagenet_utils.preprocess_input(image)

# return the processed image

return image

这个函数:

· 接受输入图像

· 将模式转换为RGB(如果需要)

· 将大小调整为224x224像素(ResNet的输入空间维度)

· 通过平均减法数组和缩放对阵列进行预处理

此外,在通过模型传递输入数据之前,应该根据某一预处理、缩放或标准化来修改这个函数。

现在可以定义predict函数了——该方法会处理对/predict端点的任何请求:

@app.route("/predict

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马云对话马斯克(全文):要警惕AI?该移民火星?如何更长寿?马化腾反对产业割裂和技术脱钩...

来源:未来论坛今天(8月29日),2019年世界人工智能大会在上海召开,500余位国内外顶尖高校、行业领军企业、国际组织的重要嘉宾,全球AI知名企业领袖齐聚于此。本次大会以“智联世界,无限可能”为主…

给plt.axvline设置图例(label)

plt.axvline的其中一个参数是label,用于给这条垂直线设置标签。但加上后就是不显示这个这个图例,代码如下: sns.kdeplot(data) plt.axvline(-2, colorr, linestyle--, label0.9) plt.show() 原因会因为没有加这一句: plt.legend…

python excel 转json_Python办公自动化| word 表格转excel

之前写过一篇 Python办公自动化 | 批量word报告生成工具 ,有小伙伴提出了逆向需求,即:从批量word中获取内容并写入excel,需求背景是汇总一些材料,举例:实习鉴定表、个人简历、档案等。实际需求是这样的&…

python在图中画一条垂直线(matplotlib)

matplotlib.pyplot.axvline https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.axvline.html?highlightaxvline#matplotlib.pyplot.axvline 用法: plt.axvline(x, colorr, linestyle--, labelxxx) plt.legend()

坦途与波折:我们需要什么样的人工智能?

来源:资本实验室历史车轮滚滚向前,如今我们正在进入人工智能时代。其中的坦途足以让我们乐观和振奋,其中的波折也可能会让我们不安或担忧。面对未来,我们需要坚持三个基本要点:效率、环保与福祉。1.人工智能与传统产业…

python画一条水平直线(matplotlib)

matplotlib.pyplot.axhline https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.axhline.html 用法: plt.axhline(0.06, colorr, linestyle--, labelxxx) plt.legend(locupper left)

sql数字转换为字符_Python|图片转换为字符画^_^

我们很清楚什么是图片,无外乎png、jpg等格式的文件,例如这个?但什么是字符画呢?先看一下官方介绍:字符画,一种由字母、标点、汉字或其他字符组成的图画。简单的字符画是利用字符的形状代替图画的线条来构成简单的人物…

全球机器人产业趋势及特征

来源:创新研究当前,全球机器人市场规模持续扩大,工业机器人市场增速回落,服务、特种机器人增速稳定。技术创新围绕仿生结构、人工智能和人机协作不断深入,产品在教育陪护、医疗康复、危险环境等领域的应用持续拓展&…

python支持向量机_支持向量机(SVM)Python实现

什么是支持向量机? “支持向量机”(SVM)是一种监督机器学习算法,可用于分类或回归挑战。然而,它主要用于分类问题。在这个算法中,我们将每一个数据项作为一个点在n维空间中(其中n是你拥有的特征数)作为一个点,每一个特征值都是一…

AR智能提升工业效率的4大场景与应用实践!

来源:北京物联网智能技术应用协会导 读 ( 文/ e-works整理 )德国学者提出“工业4.0”的概念,即以智能制造为主导的第四次工业革命,或革命性的生产方法。主要围绕两大主题,一是“智能工厂”,二是“智能生产”&#xff0…

手机进销存系统/供应链管理系统

花了将近两个月的时间学习了一个企业级进销存项目,已经结束了两周多,现在终于有时间来对这个项目的学习做个总结了! 一、首先介绍下这个项目 (注:本人目前大三,专业为信息管理,与编程沾边不多。而我对编程很…

如何评价马云和马斯克在世界人工智能大会的对话?

来源:刘锋的未来课堂马云和马斯克在世界人工智能大会的对话,虽然风轻云淡,天马行空,但两个人其实是针锋相对的,马云的观点是认为人工智能还是人类的工具,为人类的未来提供服务,马斯克继续保持他…

linux 检测mysql链接_MySQL笔记

#忘记原始密码1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables12、重启mysql:service restart stop3、刷新权限:flush privileges;4、修改密码:alter user rootlocalhost identified by Kgj2019;若…

matplotlib设置多个图例横向水平放置

一般多个图例都是竖向放置 如果想要多个图例横向放置,设置plt.legend的ncol参数,ncol参数表示将图例分为多少列,以两个图例横向放置为例: plt.legend(ncol2)

内存对齐分配策略(含位域模式)

1:内存对齐定义: 现在使用的计算机中内存空间都是按照字节划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但是实际上计算机系统对于基本数据类型在内存 中的存放位置都有限制,要求这…

科技部发布新一批国家新一代人工智能开放创新平台

来源:科技部8月29日上午,在上海举办的2019世界人工智能大会开幕式上,科技部李萌副部长发布了新启动建设的十家国家新一代人工智能开放创新平台。分别是:依托上海依图网络科技有限公司建设视觉计算国家新一代人工智能开放创新平台&…

开发里程碑计划_里程碑——让你轻松控制项目进度

对于项目结果的最好控制就是控制项目开发的过程,也就是控制项目开发过程中的几个关键节点——项目的里程碑事件。通过对里程碑事件的控制用于评估项目各阶段工作进展的有效性,以及及时的明确开发过程中存在的风险过程。我们在做项目开发计划的时候&#…

SQL Server数据库大型应用解决方案总结【转】

【IT168 技术】随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 一、负载均衡技术 负载均衡集…

Python正在吞噬世界

来源: AI前线AI 前线导读:2018 到 2019 年,所有编程语言的流行度都在下滑,除了 Python。Python 为什么会变得越来越火?本文梳理了 Python 的发展史,试图揭示背后的秘密。1994 年末,一群来自美国…

登录python自动化_Appium+Python实现自动化登录

#AppiumPython实现自动化测试 Appium简介 官方的概述为: Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol. Appium是一个开源的测试…