如何对SAP Leonardo上的机器学习模型进行重新训练
Jerry之前的两篇文章介绍了如何通过Restful API的方式,消费SAP Leonardo上预先训练好的机器学习模型:
如何在Web应用里消费SAP Leonardo的机器学习API
部署在SAP Cloud Platform CloudFoundry环境的应用如何消费
当时Jerry提到,Product Image Classification API只支持29种产品类别:

如果我们开发应用时需要支持额外的产品类别,就得需要自行提供该产品类别的图片并重新训练。

下面是SAP Leonardo上机器学习模型的重新训练步骤。
假设我们期望重新训练之后,Product Image Classfication这个模型能够识别出不同种类的花,那么我们首先得搞到大量花的图片。Tensorflow的官网上,已经体贴地给想做模型训练的学习者们,提供了一个做练习用的压缩包,里面包含了大量各式花的图片。
http://download.tensorflow.org/example_images/flower_photos.tgz
SAP Leonardo接受的能用于重新训练模型的数据集,必须符合下列的层级结构,即training, validation和test三个文件夹下面,分别包含以产品类别命名的字文件夹,且数据规模之比为8:1:1.

有了用于训练的数据后,下一步就是把这些数据上传到SAP Leonardo的模型在线存储平台上。
Jerry的前一篇文章部署在SAP Cloud Platform CloudFoundry环境的应用如何消费曾经介绍了如何在SAP云平台上创建Leonardo机器学习的服务实例,这个实例的service key里包含了一个IMAGE_RETRAIN_API_URL,可以用来获取在线存储的url:

向这个url发送一个HTTP get请求,得到在线存储的url:

把这个url粘贴到浏览器里,输入postman里返回的accessKey和secretKey登录,就能以web的方式访问这个在线存储了:

下一步是把本地的训练文件上传到这个部署在AWS上的在线存储上去。
首先用命令行mc config host定义一个名为sapjerrys3的远程站点,将上一步从postman获得的AWS在线存储url,accessKey和secret绑定到这个站点上:

然后使用命令行上传文件:
mc.exe cp -r C:\Code\MachineLearningStudy\flowersjerry sapjerrys3\data
大概十几分钟后,文件上传完毕:

此时可以从浏览器里看到AWS在线存储上传完毕的训练文件。

现在可以提交一个后台作业了,让Leonardo去处理这些上传好的文件,ABAP顾问们可以把这个动作理解成在Netweaver事务码SM36里定义一个后台作业并提交。发送一个HTTP post请求,除了下图jobName, dataset和modelName需要自己维护外,其他字段都使用SAP官网上定义的默认值。

这个请求会返回一个后台作业ID,抄下来后把它拼到url末尾,然后重新发送一个HTTP get请求,即可查询到这个作业的执行情况。Jerry做的时候,等待了大概五分钟,作业状态就变为SUCCEEDED了。

因为上一篇和本文做的练习都是在SAP Cloud Platform的CloudFoundry环境中进行的,因此我们也可以用cf命令行来查询这些作业的执行情况:
cf sapml retraining jobs -m image

如果遇到作业状态为FAILED的情况,去AWS在线存储上查看以作业名称命名的文件夹,里面包含了详细的训练日志,可以用作错误分析:

在这个训练好的模型能正式被使用之前,我们还需要对其进行部署,类似ABAP Netweaver里的“激活”动作。

和提交训练的后台作业类似,模型部署也是一个异步执行的步骤,提交部署请求后,得到一个部署作业ID:ms-26c5a22c-6d07-4164-8222-a4182969162d

根据这个部署作业ID可以查询模型部署状态:

成功部署后,我们就可以用Restful API消费这个模型了,url的格式为:https://mlfinternalproduction-image-classifier.cfapps.sap.hana.ondemand.com/api/v2/image/classification/models//versions/1
我从网络上随便找一张向日葵的照片,

将这张图片作为HTTP POST的参数发给我重新训练并且部署好的模型flowerjerrymodel,得到的结果显示,重新训练后的模型认为这张图片有大约87%的可能性是代表向日葵。


接下来有时间的话,我打算搜集一些异形的图片来训练,看SAP Leonardo能不能把我桌上挂着的这个异形吊饰识别出来。感谢阅读。


要获取更多Jerry的原创文章,请关注公众号"汪子熙":

如何对SAP Leonardo上的机器学习模型进行重新训练的更多相关文章
- 使用SAP Leonardo上的机器学习服务提取图片的特征向量
要想提取图片的特征向量,首先得知道特征向量是什么. 我们假设这样一个服务场景,技师上门维修某设备,发现上面某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技师掏出自 ...
- SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用
本文作为Jerry最近正在做的一个项目的工作思路的梳理. 我们假设这样一个服务场景,技师上门维修某设备,发现设备上某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技 ...
- 部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API
Jerry的前一篇文章 如何在Web应用里消费SAP Leonardo的机器学习API 里介绍的例子是Neo测试环境的Web应用消费sandbox版本的机器学习API,url如下: https://s ...
- 使用Java程序消费SAP Leonardo的机器学习API
以sap leonardo作为关键字在微信上搜索,能搜到不少文章.但是我浏览了一下,好像没有发现有从具体编程角度上来介绍的.所以我就贡献一篇. 需求 开发一个Java程序,用户可以指定一张图片,该Ja ...
- 用PMML实现机器学习模型的跨平台上线
在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环 ...
- 用PMML实现python机器学习模型的跨平台上线
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 如何在Web应用里消费SAP Leonardo的机器学习API
去年5月的时候,Jerry曾经写了一篇文章:使用Java程序消费SAP Leonardo的机器学习API,而最近另外做的一个项目,需要在Web应用里做同样的事情. 因为有了前一篇文章的铺垫,避免了很多 ...
- 读懂SAP Leonardo物联网平台
读懂SAP Leonardo物联网平台 https://blog.csdn.net/weixin_42137700/article/details/81903290 本文比较系统.全面地介绍了SAP ...
- Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...
随机推荐
- 清空表且id为0
sql命令: 用于清空某表的数据 且让自增的id重新从0开始 truncate table
- jq删除标签
<script>$(function(){ $("div").remove()})</script>
- LVS的调度算法介绍
1.轮询调度(rr) 轮询调度(Round Robin 简称'RR')算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单.轮询算法假设所有的服务器处理请求的能力都一样的, ...
- 123457123456#0#-----com.threeapp.MakerHanBao01----儿童汉堡制作游戏
----com.threeapp.MakerHanBao01----儿童汉堡制作游戏
- ElasticSearch——原始文档和倒排索引
一.原始文档 如上图所示, 第二象限是一份原始文档,有title和content2个字段,字段取值分别为”我是中国人”和” 热爱共X产党”,这一点没什么可解释的.我们把原始文档写入Elasticsea ...
- Azure Web应用相关设置
这里用来记录自己在工作中,在Azure Web应用中用到的配置 设置NodeJS版本 Azure Web应用默认的NodeJS版本是0.10.4,这个版本太低,不能满足实际的需要 参照下图修改,根据自 ...
- Spark学习笔记0——简单了解和技术架构
目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...
- 【转载】利用Amazon ECR和ECS部署容器应用
众所周知现在容器的技术越来越火,很多企业已经将整个业务架构容器化,利用容器的灵活性.可移植性.轻量等优势为企业开发和运维带来很大的优势,目前整个容器编排服务中最吃香的当然是Kubernetes (简称 ...
- UIPath工具来取得邮件里面的添付文件及邮件内容
下图是得到Outlook邮件附件的示意图 下面的图是对UIPath的属性的设定.最重要的是两个文件夹要保持一致.
- C语言程序设计II—第十一周教学
第十一周教学总结(6/5-12/5) 教学内容 本周的教学内容为:10.1 知识点:多个函数构成的程序结构.10.2 递归函数.10.3编译预处理概念,包括文件.宏的内容.10.4 多文件模块的学生信 ...