专栏名称: 机器之心
专业的人工智能媒体和产业服务平台
目录
相关文章推荐
51好读  ›  专栏  ›  机器之心

开源 | 基于Metal的机器学习框架Bender:可在iOS上运行TensorFlow模型

机器之心  · 公众号  · AI  · 2017-06-07 11:47

正文

请到「今天看啥」查看全文



本项目的文档在 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
let randomLoader = RandomParameterLoader(maxSize: 7*






请到「今天看啥」查看全文