国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Java程序消費(fèi)SAP Leonardo的機(jī)器學(xué)習(xí)API

AlanKeene / 863人閱讀

摘要:需求開發(fā)一個(gè)程序,用戶可以指定一張圖片,該程序調(diào)用上訓(xùn)練好的機(jī)器學(xué)習(xí),該會(huì)識(shí)別該圖片,給用戶返回一個(gè)文本信息,告訴用戶識(shí)別結(jié)果。至此,您可以開始編寫代碼使用提供的來(lái)調(diào)用該機(jī)器學(xué)習(xí)了。使用了發(fā)布的一個(gè)開源庫(kù),將返回的響應(yīng)反序列化成對(duì)象。

以sap leonardo作為關(guān)鍵字在微信上搜索,能搜到不少文章。但是我瀏覽了一下,好像沒有發(fā)現(xiàn)有從具體編程角度上來(lái)介紹的。所以我就貢獻(xiàn)一篇。

需求

開發(fā)一個(gè)Java程序,用戶可以指定一張圖片,該Java程序調(diào)用SAP Leonardo上訓(xùn)練好的機(jī)器學(xué)習(xí)API,該API會(huì)識(shí)別該圖片,給用戶返回一個(gè)文本信息,告訴用戶識(shí)別結(jié)果。

訪問(wèn)https://api.sap.com, 點(diǎn)擊API:


SAP Leonardo Machine Learning - Functional Services

點(diǎn)擊Product Image Classification API:

會(huì)看到如下界面。該界面包含了這個(gè)API的Model Schema介紹,即您調(diào)用API之后,返回的響應(yīng)結(jié)構(gòu)里包含哪些字段,以及對(duì)應(yīng)的類型(對(duì)象或者數(shù)組)。界面里包含了一個(gè)小型的API調(diào)用控制臺(tái),您可以直接控制臺(tái)里選擇一個(gè)本地圖形文件,然后點(diǎn)擊Try it out按鈕來(lái)體驗(yàn)一下API的效果。

例如我使用了下面這張圖片進(jìn)行測(cè)試:

在控制臺(tái)里看到請(qǐng)求處理成功,API判斷出來(lái)該圖片有97%的可能性是一臺(tái)notebook。


下面我們需要使用Java程序來(lái)調(diào)用API。

前一步驟的API控制臺(tái)的右上角有一個(gè)按鈕Download SDK,點(diǎn)擊之后將SDK下載到本地:


可以看到該SDK是一個(gè)基于Gradle的Java項(xiàng)目。您需要下載Maven和Gradle并完成環(huán)境變量的配置,這些配置非常基礎(chǔ),在網(wǎng)上有大量資料,這里不再重復(fù)。
完成配置后,使用Eclipse的import功能,將SDK導(dǎo)入到Eclipse里。

導(dǎo)入完成后如圖。紅色區(qū)域是SDK自帶的代碼,藍(lán)色區(qū)域是Jerry自己手動(dòng)創(chuàng)建的代碼,用于調(diào)用API并打印結(jié)果。

雙擊根目錄下的pom.xml, 將如下依賴關(guān)系維護(hù)進(jìn)去:


在項(xiàng)目根目錄下執(zhí)行Maven命令 mvn install, 確保項(xiàng)目成功build。至此,您可以開始編寫Java代碼使用SAP提供的JDK來(lái)調(diào)用該機(jī)器學(xué)習(xí)API了。

使用下圖的Java代碼調(diào)用SDK去消費(fèi)API。SDK封裝了底層HTTP請(qǐng)求的發(fā)送和響應(yīng)的解析等細(xì)節(jié),使用起來(lái)非常簡(jiǎn)捷。

為簡(jiǎn)單起見,上圖13行我將本地圖片文件的絕對(duì)地址硬編碼進(jìn)去。上圖第八行硬編碼的API key來(lái)自API控制臺(tái):

至此,大功告成,運(yùn)行程序。。。。。。什么情況?

錯(cuò)誤分析

仔細(xì)看過(guò)錯(cuò)誤消息,很快Jerry就發(fā)現(xiàn)了問(wèn)題出在哪里。上圖藍(lán)色下劃線就暗示了錯(cuò)誤根源。SAP SDK使用了Google發(fā)布的一個(gè)開源Java庫(kù)Gson,將API返回的響應(yīng)反序列化成Java對(duì)象。有了Gson,應(yīng)用程序開發(fā)人員無(wú)需重復(fù)造輪子,只需要定義一些Java類,作為容器存儲(chǔ)Gson反序列化的執(zhí)行結(jié)果即可。

我們?cè)倩氐紸PI控制臺(tái),API響應(yīng)結(jié)構(gòu)里request字段的類型聲明為string。

然而通過(guò)測(cè)試發(fā)現(xiàn),request字段的內(nèi)容實(shí)際是一個(gè)Json對(duì)象:

從http://api.sap.com下載的SDK里...,Gson容器類Response.java里聲明的request字段類型為String,而非對(duì)象,因此Gson會(huì)拋異常:Expected a string but was BEGIN_OBJECT at line 31 column 15 path $.request

知道了問(wèn)題根源,改起來(lái)就容易了。新建一個(gè)Gson容器類Request.java, 然后按照控制臺(tái)里觀察到的request字段的結(jié)構(gòu),為Request.java維護(hù)對(duì)應(yīng)的成員變量。
例如tenantName在API響應(yīng)結(jié)構(gòu)里是一個(gè)String,因此在Java類里的類型是String;files在API響應(yīng)結(jié)構(gòu)里是一個(gè)數(shù)組,因此在Java類里的類型為L(zhǎng)ist


調(diào)整完畢之后再次執(zhí)行,能看到期望的輸出結(jié)果:通過(guò)SDK調(diào)用API并打印結(jié)果。


如果您不愿意自己手動(dòng)修改,可以直接從我的github下載修改之后的代碼,只需要用您自己的API key替換掉代碼中硬編碼的key即可。

https://github.com/i042416/Pr...

更多Leonardo精彩,盡在https://api.sap.com!

要獲取更多Jerry的原創(chuàng)技術(shù)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙"。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/19749.html

相關(guān)文章

  • 使用Java程序消費(fèi)SAP Leonardo機(jī)器學(xué)習(xí)API

    摘要:需求開發(fā)一個(gè)程序,用戶可以指定一張圖片,該程序調(diào)用上訓(xùn)練好的機(jī)器學(xué)習(xí),該會(huì)識(shí)別該圖片,給用戶返回一個(gè)文本信息,告訴用戶識(shí)別結(jié)果。至此,您可以開始編寫代碼使用提供的來(lái)調(diào)用該機(jī)器學(xué)習(xí)了。使用了發(fā)布的一個(gè)開源庫(kù),將返回的響應(yīng)反序列化成對(duì)象。 以sap leonardo作為關(guān)鍵字在微信上搜索,能搜到不少文章。但是我瀏覽了一下,好像沒有發(fā)現(xiàn)有從具體編程角度上來(lái)介紹的。所以我就貢獻(xiàn)一篇。 show...

    noONE 評(píng)論0 收藏0
  • JavaScript訪問(wèn)SAP云平臺(tái)上服務(wù)遇到跨域問(wèn)題該怎么辦

    摘要:關(guān)于的跨域問(wèn)題的討論網(wǎng)上有太多的資源了。直入主題,最近我正在做一個(gè)原型開發(fā)通過(guò)云平臺(tái)和把系統(tǒng)上的暴露出來(lái),給微信消費(fèi)。請(qǐng)求得到響應(yīng)之后,再將其發(fā)送給。回到我的原型開發(fā)需求,云平臺(tái)上的消費(fèi)如今通過(guò)來(lái)實(shí)現(xiàn),為簡(jiǎn)單起見,我將硬編碼在里。 關(guān)于JavaScript的跨域問(wèn)題(Cross Domain)的討論, 網(wǎng)上有太多的資源了。國(guó)內(nèi)的程序猿寫了非常多的優(yōu)秀文章,Jerry這里就不再重復(fù)了。 ...

    用戶84 評(píng)論0 收藏0
  • JavaScript訪問(wèn)SAP云平臺(tái)上服務(wù)遇到跨域問(wèn)題該怎么辦

    摘要:關(guān)于的跨域問(wèn)題的討論網(wǎng)上有太多的資源了。直入主題,最近我正在做一個(gè)原型開發(fā)通過(guò)云平臺(tái)和把系統(tǒng)上的暴露出來(lái),給微信消費(fèi)。請(qǐng)求得到響應(yīng)之后,再將其發(fā)送給。回到我的原型開發(fā)需求,云平臺(tái)上的消費(fèi)如今通過(guò)來(lái)實(shí)現(xiàn),為簡(jiǎn)單起見,我將硬編碼在里。 關(guān)于JavaScript的跨域問(wèn)題(Cross Domain)的討論, 網(wǎng)上有太多的資源了。國(guó)內(nèi)的程序猿寫了非常多的優(yōu)秀文章,Jerry這里就不再重復(fù)了。 ...

    Jinkey 評(píng)論0 收藏0
  • 機(jī)器學(xué)習(xí)SAP Cloud for Customer中應(yīng)用

    摘要:機(jī)器學(xué)習(xí)在客戶管理場(chǎng)景中的應(yīng)用使用機(jī)器學(xué)習(xí)進(jìn)行客戶管理,我們可以得到客戶度全方位的視圖。可以看到機(jī)器學(xué)習(xí)給為和這兩個(gè)產(chǎn)品計(jì)算的相關(guān)分?jǐn)?shù)是和。關(guān)于機(jī)器學(xué)習(xí)在中的更多應(yīng)用,請(qǐng)參考幫助文檔。 關(guān)于機(jī)器學(xué)習(xí)這個(gè)話題,我相信我這個(gè)公眾號(hào)1500多位關(guān)注者里,一定有很多朋友的水平比Jerry高得多。如果您看過(guò)我以前兩篇文章,您就會(huì)發(fā)現(xiàn),我對(duì)機(jī)器學(xué)習(xí)僅僅停留在會(huì)使用API的層面上。 使用Java程...

    Jeff 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<