基於Metal的框架Bender:可在iOS上運行TF模型
選自GitHub
機器之心編譯
參與:吳攀
在正在舉行的 WWDC 2017 上,蘋果宣布發布了 Metal 2,詳情可參閱機器之心的報道《蘋果開發者大會 WWDC 2017:首次全面展示蘋果的人工智慧實力》。而差不多在 WWDC 2017 大會開幕時,XMART LABS 在 GitHub 上開源了 Bender——一個基於 Metal 的現代機器學習框架,而值得一提的是,Bender 也是著名動畫《飛出個未來》裡面的一個金屬(metal)機器人主角。機器之心在這篇文章中對該項目進行了編譯介紹。
項目地址:https://github.com/xmartlabs/Bender
Bender 是 MetalPerformanceShaders 之上的一個抽象層(abstraction layer),可用於操作神經網路。在 Bender 出現後,蘋果機器學習環境中有了自己的框架。
本項目的文檔在 Documentation 文件中:
API 包含了上手使用所需的最重要的信息;
Supported Layers 解釋了其支持哪些層以及它們是如何映射到 TensorFlow 指令的;
Importing 解釋了如何將 TensorFlow 等其它框架的模型導入進來。你可以找到如何為自定義實現增強這個功能的信息。
介紹
Bender 是 MetalPerformanceShaders 之上的一個抽象層(abstraction layer),可用於操作神經網路。在人工智慧領域,人們對在移動設備上執行神經網路的興趣越來越大,即便其訓練過程是預先在其它地方完成的。我們希望人們能更輕鬆地在 iOS 上運行預訓練的網路。
Bender 可以讓你輕鬆使用卷積、池化、全連接和一些規範化等最常見的層,從而輕鬆地定義和運行神經網路。而且這些層接收參數的方式也很靈活。我們希望能載入在 TensorFlow 或 Caffe2 等框架上訓練好的模型。目前 Bender 有一個用於 TensorFlow 的適配器(adapter),其可以載入帶有變數的圖(graph),並將其「翻譯」成 Bender 的層(layer)。這個功能僅支持一部分 TensorFlow 指令,但我們計劃增強它,使其覆蓋更大的範圍。
Bender 已經可用了,但也仍處在積極的開發階段,我們也希望看到社區的需求能推動它的發展。注意,它的 API 還不是很穩定。
我們為什麼需要 Bender?
在 Xmartlabs,我們曾經想要啟動一個機器學習項目,然後我們調查了可以在 iOS 中使用的框架。我們發現 MetalPerformanceShaders 很有用,但對用戶並不太友好,我們發現我們重複了大量代碼和信息。這就是我們為什麼要開始構建一個能夠處理這類事物的框架。
我們還發現我們需要將使用 TensorFlow 訓練的模型翻譯成 iOS 上可用,為此我們需要編寫腳本,使之可以將權重轉換成 MPSCNN 格式,並將 TensorFlow 的層中不同類型的參數映射成 MPSCNN 核所使用的參數。TensorFlow 可以為 iOS 進行編譯,但目前它並不支持在 GPU 上運行,而這卻正是我們需要的。我們也並不想將 TensorFlow 的靜態庫包含在我們的項目中。所以我們開發了一個適配器,可以將 TF graph 解析並翻譯成我們的 Bender layer。
使用方法
你可以使用我們自定義的運算元在 Bender 中定義你自己的網路,或者你可以載入從 TensorFlow 導出的模型。你可以通過如下方式定義一個網路和載入一個模型:
import Bender// Define a network and how it will load its weights / parameters
你可以在 Importing 文檔了解更多信息。
如果你想自己定義你的網路,你可以如下操作:
let network = ...network.start ->> Convolution(convSize: ConvSize(outputChannels: 16, kernelSize: 3, stride: 2))
了解更多請查看 API 文檔。
環境要求
iOS 10.0+
Xcode 8.3+
參與
你可以在 GitHub 上參與和貢獻;
如果你希望增加新功能,請開啟一個問題;
如果你發現了 bug 或需要幫助,請先查閱過去的問題、FAQ 和 StackOverflow 上的流程(標籤:Bender),然後再提交問題。
在貢獻之前,請先查閱 CONTRIBUTING 文件了解更多信息。如果你在你的 App 中使用了 Bender,請告知我們。
樣例
按以下三個步驟,可以運行一個樣例項目:克隆 Bender 庫、打開 Bender 工作空間,運行 Example 項目。
安裝
CocoaPods
安裝 Bender,在你的 Podfile 中添加以下代碼即可:
pod "MetalBender", :git => "https://github.com/xmartlabs/Bender.git"
記住 Bender 是為 iOS 10 編譯的。所以你必須在你的 Podfile 中加入 platform :ios, "10.0"
作者
Xmartlabs SRL:https://github.com/xmartlabs
@xmartlabs:https://twitter.com/xmartlabs
更改日誌
參閱 CHANGELOG.md 文件。
※深度學習C語言修改器DeepFix:用人工智慧加「符號」
※蘋果開發者大會WWDC 2017:全面展示蘋果的人工智慧實力
※大漠孤煙,長河落日:面向景深結構的風景照生成技術
※實驗研究工作流程詳解:如何把你的機器學習想法變成現實
TAG:機器之心 |
※Nike Air Max 97「Metallic」即將上架;走進 Jony J 球鞋店鋪 OKAY WZK | HB Daily
※發售通知 Metallica x Vans Sk8-Hi Reissue/Classic Slip-On
※Nike Air Max 97 全新「Metallic Gold/Metallic Silver」配色上架消息公布
※關於「Metal Cutting Theory—New Perspective and New Approaches」一書
※Bandai 宣布再度販售 Metal Build EVA 初號機玩具模型
※Nike Air Vapormax 97 全新「Metallic Cashmere」配色上架
※Nike Air VaporMax 97 全新配色設計「Metallic Dark Sea」
※後天發售!Nike Air Penny 1 White Metalllic 將具有3M反光!
※Nike React Element 87 釋出全新「Metallic Gold」配色
※Nike Air VaporMax 97 將迎來全新「Metallic Gold」配色
※Swarovski x Nike 全新聯名 Air Max 97 LX「Metallic Gold」即將發售
※近賞 Nike Air VaporMax 97「Metallic Gold」配色
※近賞 Nike Air Max 97「Metallic Gold」之 Swarovski 水晶定製版本
※近賞 Nike Air Force 1 『07 LV8 Jewel 最新配色「Metallic Gold」
※Nike Air Max 97 全新「Metallic」系列即將上架
※有點好看!Air VaporMax 97 全新配色「Metallic Dark Sea」
※Air Jordan 12「Metallic Green」演繹電鍍魅惑
※配色反轉,Air Max 97 「Metallic Gold」全新Sample諜照曝光!
※搶先預覽 Nike Air Max 720 全新「Metallic Platinum」配色
※Air Max 97全新配色「Metallic Pack」