99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀谷歌教你學 AI-第四講部署預測模型
谷歌教你學 AI-第四講部署預測模型
2018-01-25
收藏

谷歌教你學 AI-第四講部署預測模型

Google Cloud發(fā)布了名為"AI Adventures"的系列視頻,用簡單易懂的語言讓初學者了解機器學習的方方面面。

觀看更多國外公開課,點擊"閱讀原文"

之前我們更新了前三講,關于機器學習的概念和具體步驟。后臺收到的反饋十分熱烈,今天讓我們繼續(xù)更新:第四講部署預測模型。

回顧之前內(nèi)容:

谷歌教你學 AI -第一講機器學習是什么?

谷歌教你學 AI -第二講機器學習的7個步驟

谷歌教你學 AI-第三講簡單易懂的估算器

主講人還是來自Google Cloud的開發(fā)人員,華裔小哥Yufeng Guo。讓我們在學習AI知識的同時來提高英語吧。

CDA字幕組目前在對該系列視頻進行漢化,之后將繼續(xù)連載,歡迎關注和支持~

附有中文字幕的視頻如下:

AI Adventures--第四講部署預測模型

針對不方便打開視頻的小伙伴,CDA字幕組也貼心的整理了文字版本,如下:

一旦我們有了訓練好的機器學習模型,那么該如何進行預測呢? 敬請收看本期AI Adventures !

谷歌的Cloud Machine Learning Engine能夠讓你為TensorFlow模型創(chuàng)建預測服務,且不需要任何操作。通過從訓練的模型轉換為部署的、自動擴展的預測服務,我們可以用更多時間來處理數(shù)據(jù)。

進行預測:最后一步

我們收集了數(shù)據(jù),最終完成了一個合適的模型并驗證了它的性能。我們現(xiàn)在終于準備好進入最后階段:進行預測。

在接受提供預測服務的挑戰(zhàn)時,我們希望部署一個專門為服務而構建的模型。特別是一個快速、輕量級的模型,而且是靜態(tài)的,因為我們不希望在提供服務時出現(xiàn)更新。

此外,我們希望預測服務器能夠按需擴展,這能夠解決更復雜的問題。

輸出TensorFlow模型

事實證明,TensorFlow有一個內(nèi)置函數(shù),能夠在提供預測服務時生成優(yōu)化的模型。并且能夠進行需要的調(diào)整,這節(jié)省了大量的工作。

這個函數(shù)叫做 export_savedmodel(),當你對訓練模型的性能滿意時,我們可以直接在分類器對象上運行。

這將獲取模型的快照,并導出可以在其他地方使用的文件。隨著模型的改進,你可以繼續(xù)得出更新的模型,從而不斷提供模型的多個版本。

導出的文件由一個文件和一個文件夾組成。其中文件是 saved_model.pb,它定義了模型結構。變量文件夾包含兩個文件,在我們的模型中提供訓練權重。

生產(chǎn)中提供模型

一旦你導出模型就可以在提供到生產(chǎn)中了。這里有兩個主要的選擇: 使用TensorFlow Serving,或者Cloud Machine Learning Engine來提供預測服務。

TensorFlow Serving屬于TensorFlow,發(fā)布在GitHub上。如果你喜歡對開發(fā)環(huán)境設施進行配置,并且按需求進行擴展的話,這是不錯的選擇。

然而,今天我們將主要關注Cloud Machine Learning Engine的預測服務,盡管這兩者有相似的文件接口。

Cloud Machine Learning Engine能夠讓你用導出的TensorFlow模型,并將其轉換為預測服務,當中內(nèi)置API端點且自動擴展,并將達到零(即當沒有人請求預測時沒有計算機會改變)。

同時它還包含功能豐富的命令行工具、API和UI,因此我們可以根據(jù)喜好以不同的方式進行交互。

部署新的預測模型

下面讓我們看看如何針對上期分辨鳶尾花的例子,使用Cloud Machine Learning Engine的預測服務。

輸出和上傳

首先在訓練的分類器上運行 export_savedmodel()  。這將生成一個導出模型,我們可以用于預測服務。

接下來,我們要將文件上傳到谷歌云存儲。當創(chuàng)建新的模型版本時,Cloud machine learning engine將從云存儲中讀取。

在創(chuàng)建bucket時,一定要選擇區(qū)域存儲類,以確保計算和存儲在同一區(qū)域。

創(chuàng)建新的模型

在云機器學習UI中,我們可以創(chuàng)建一個新的模型,這實際上是對所有發(fā)布版本的封裝。版本保存了單個導出模型,而模型抽象幫助將進入的流量導入選擇的適當版本。

以下是模型列表視圖,在這里我們創(chuàng)建一個新的模型。

創(chuàng)建模型需要給其命名,我們將其命名為iris_model。

創(chuàng)建新版本

接下來,我們將創(chuàng)建一個版本,通過為這個特定的模型版本命名,并將其指向存有導出文件的云存儲目錄。

就這樣,我們創(chuàng)建了模型! 整個過程只需要將服務指向導出模型,并給它命名。

為什么整個過程這么簡單呢?

因為服務處理了設置和保護端點的所有操作。此外,我們不需要編寫代碼,根據(jù)需求進行擴展。因為在云端,這種靈活性意味著當需求很低時,不需要支付未使用的計算。

通過為鳶尾花模型建立不需要任何操作的預測服務,我們可以在幾分鐘內(nèi)將訓練的模型轉化為部署的、可自動擴展的預測服務,這意味著我們有更多的時間來處理數(shù)據(jù)!

歡迎收看本期的AI Adventures。別忘了,當你需要在生產(chǎn)中擴展機器學習服務時,Cloud Machine Learning Engine是不錯的選擇。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }