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

資訊專欄INFORMATION COLUMN

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

AlanKeene / 858人閱讀

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

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

需求

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

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


SAP Leonardo Machine Learning - Functional Services

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

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

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

在控制臺里看到請求處理成功,API判斷出來該圖片有97%的可能性是一臺notebook。


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

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


可以看到該SDK是一個基于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自己手動創(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來調(diào)用該機(jī)器學(xué)習(xí)API了。

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

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

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

錯誤分析

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

我們再回到API控制臺,API響應(yīng)結(jié)構(gòu)里request字段的類型聲明為string。

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

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

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


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


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

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

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

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

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

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

相關(guān)文章

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

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

    noONE 評論0 收藏0
  • JavaScript訪問SAP云平臺上服務(wù)遇到跨域問題該怎么辦

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

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

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

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

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

    Jeff 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<