chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

iOS11中關(guān)于機(jī)器學(xué)習(xí)開發(fā)的新應(yīng)用分析

大小:0.16 MB 人氣: 2017-09-25 需要積分:1

  WWDC 2017 使一件事情變得非常清楚,那就是:Apple 正在全力以赴地支持「設(shè)備上的機(jī)器學(xué)習(xí)」了。

  他們希望 App 的開發(fā)者們能夠盡可能的簡單的加入他們的行列中。

  Apple 去年發(fā)布了可以用于創(chuàng)建基本的卷積神經(jīng)網(wǎng)的 Metal CNN 和 BNNS 框架。今年,Metal 得到了進(jìn)一步擴(kuò)展,增加了一個(gè)全新的計(jì)算機(jī)視覺框架,以及 Core ML:一個(gè)能夠輕松地將機(jī)器學(xué)習(xí)集成到 App 中的工具包。

  

  Core ML framework

  在這片文章中,我將就 iOS 11 和 macOS 10.13 中這些新推出的機(jī)器學(xué)習(xí)的內(nèi)容,分享我自己的一些想法和經(jīng)驗(yàn)。

  Core ML

  Core ML 在 WWDC 上獲得了極大的關(guān)注度,原因很簡單:大部分開發(fā)者希望能夠在他們的 App 中使用這個(gè)框架。

  Core ML 的 API 非常簡單。你只能用它做這些事情:

  加載一個(gè)訓(xùn)練好的模型

  做出預(yù)測

  收益!?。?/p>

  這看起來好像很有限,但實(shí)際上你一般只會(huì)在 App 中加載模型和做出預(yù)測這兩件事。

  在 Core ML 之前,加載訓(xùn)練好的模型是非常困難的 —— 實(shí)際上,我寫過一個(gè)框架來減輕這種痛苦。所以現(xiàn)在我對(duì)這一個(gè)簡單的兩步過程感到非常高興。

  模型被包含在了一個(gè).mlmodel 的文件中。這是一種新的開源文件格式,用于描述模型中的 layer、輸入輸出、標(biāo)簽,以及需要在數(shù)據(jù)上產(chǎn)生的任何預(yù)處理過程。它還包括了所有的學(xué)習(xí)參數(shù)(權(quán)重和偏置)。

  使用模型所需的一切都在這一個(gè)文件里面了。

  你只需要將 mlmodel 文件放入你的項(xiàng)目中,Xcode 將會(huì)自動(dòng)生成一個(gè) Swift 或 Objective-C 的包裝類,使你能簡單的使用這個(gè)模型。

  舉個(gè)例子,如果你把文件ResNet50.mlmodel 添加到你的 Xcode 項(xiàng)目中,那么你就可以這么寫來實(shí)例化這個(gè)模型:

  let model = ResNet50()

  然后做出預(yù)測:

  let pixelBuffer: CVPixelBuffer = /* your image */if let prediction = try? model.prediction(image: pixelBuffer) {

  print(prediction.classLabel)

  }

  這差不多就是所有要寫的東西了。你不需要編寫任何代碼來加載模型,或者將其輸出轉(zhuǎn)換成可以從 Swift 直接使用的內(nèi)容 —— 這一切都將由 Core ML 和 Xcode 來處理。

  注意: 要了解背后發(fā)生了什么,可以在 Project Navigator 里選擇 mlmodel 文件,然后點(diǎn)擊 Swift generated source 右邊的箭頭按鈕,就能夠查看生成的幫助代碼了。

  Core ML 將決定自己到底是在 CPU 上運(yùn)行還是 GPU 上運(yùn)行。這使得它能夠充分的利用可以用的資源。Core ML 甚至可以將模型分割成僅在 GPU 上執(zhí)行的部分(需要大量計(jì)算的任務(wù))以及 CPU 上的其他部分(需要大量內(nèi)存的任務(wù))。

  Core ML 使用 CPU 的能力對(duì)于我們開發(fā)者來說另一個(gè)很大的好處是:你可以從 iOS 模擬器運(yùn)行它,從而運(yùn)行那些對(duì)于 Metal 來說做不到,同時(shí)在單元測試中也不太好的任務(wù)。

  Core ML 支持什么模型?

  上面的 ResNet50 例子展示的是一個(gè)圖像分類器,但是 Core ML 可以處理幾種不同類型的模型,如:

  支持向量機(jī) SVM

  諸如隨機(jī)森林和提升樹的決策樹集成

  線性回歸和 logistic 回歸

  前饋神經(jīng)網(wǎng)、卷積神經(jīng)網(wǎng)、遞歸神經(jīng)網(wǎng)

  所有這些模型都可以用于回歸問題和分類問題。此外,你的模型可以包含這些典型的機(jī)器學(xué)習(xí)預(yù)處理操作,例如獨(dú)熱編碼(one-hot encoding)、特征縮放(feature scaling)、缺失值處理等等。

  Apple 提供了很多已經(jīng)訓(xùn)練好的模型,例如 Inception v3、ResNet50 和 VGG16 等,但你也可以使用 這個(gè) Python 庫來轉(zhuǎn)換自己的模型。

  目前,你可以轉(zhuǎn)換使用 Keras、Caffe、scikit-learn、XGBoost 和 libSVM 訓(xùn)練的模型。轉(zhuǎn)換工具只會(huì)支持具體指定的版本,比如 Keras 支持 1.2.2 但不支持 2.0。辛運(yùn)的是,該工具是開源的,所以毫無疑問它將來會(huì)支持更多的訓(xùn)練工具包。

  如果這些都不行,你還是可以隨時(shí)編寫自己的轉(zhuǎn)換器。mlmodel 文件格式是開源且可以直接使用的(由 Apple 制定發(fā)布的一種 protobuf 格式)

  局限

  如果你想在你的 App 上馬上運(yùn)行一個(gè)模型, Core ML 很不錯(cuò)。然而使用這樣一個(gè)簡單的 API 一定會(huì)有一些限制。

  僅支持有監(jiān)督學(xué)習(xí)的模型,無監(jiān)督學(xué)習(xí)和增強(qiáng)學(xué)習(xí)都是不行的。(不過有一個(gè)「通用」的神經(jīng)網(wǎng)絡(luò)類型支持,因此你可以使用它)

  設(shè)備上不能進(jìn)行訓(xùn)練。你需要使用離線工具包來進(jìn)行訓(xùn)練,然后將它們轉(zhuǎn)換到 Core ML 格式。

  如果 Core ML 不支持某種類型的 layer,那么你就不能使用它。在這一點(diǎn)上,你不能使用自己的 kernel 來擴(kuò)展 Core ML。在使用 TensorFlow 這樣的工具來構(gòu)建通用計(jì)算圖模型時(shí),mlmodel 文件格式可能就不那么靈活了。

  Core ML 轉(zhuǎn)換工具只支持特定版本的數(shù)量有限的訓(xùn)練工具。例如,如果你在 TensorFLow 中訓(xùn)練了一個(gè)模型,則無法使用此工具,你必須編寫自己的轉(zhuǎn)換腳本。正如我剛才提到的:如果你的 TensorFlow 模型具有一些 mlmodel 不支持的特性,那么你就不能在 Core ML 上使用你的模型。

  你不能查看中間層的輸出,只能獲得最后一層網(wǎng)絡(luò)的預(yù)測值。

  我感覺下載模型更新會(huì)造成一些問題,如果你不想每次重新訓(xùn)練模型的時(shí)候都重寫一個(gè)新版本的 App,那么 Core ML 不適合你。

  Core ML 對(duì)外屏蔽了它是運(yùn)行在 CPU 上還是 GPU 上的細(xì)節(jié) —— 這很方便 —— 但你必須相信它對(duì)你的 App 能做出正確的事情。即便你真的需要,你也不能強(qiáng)迫 Core ML 運(yùn)行在 GPU 上。

  如果你能夠忍受這些限制,那么 Core ML 對(duì)你來說就是正確的選擇。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

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

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?