对于TensorFlow框架,你了解多少

作者: 爱码小士 | 来源:发表于2018-11-02 15:33 被阅读1次

人工智能、机器学习都已走进了我们的日常,尤其是愈演愈热的大数据更是跟我们的生活息息相关,做 人工智能、数据挖掘的人在其他人眼中感觉是很高大上的,总有一种遥不可及的感觉,在我司也经常会听到数据科学部的同事们提到 机器学习、数据挖掘 之类的词。但这些名词真的跟我们移动开发就没直接关系了吗?
作为移动开发者来说,无时无刻不被这些名词狠狠地敲打着脆弱的内心。???? ???? ???? 何时才能够将机器学习、深度学习应用在移动端,敲响移动端机器学习工业化的大门呢?

想象一下,某一天你身处一个完全陌生的环境,周围都是陌生的事物,而运行在iPhone的某个APP却对这个环境了如指掌,你要做的就是打开这个APP,输入你需要了解的事物,iPhone告诉你这个事物的信息,你也就没有了陌生事物了。世界就在眼前!

如下图:

上面物体的识别准确率还是蛮不错的,基本识别出了键盘(49%的概率)、鼠标(46%的概率)和水杯(24%的概率)。

但是在某些事物的识别准确度方便却差强人意,比如下图:

Phone 8被识别成了iPod(59%的概率),而iPod的却是不怎么敢认(10%的概率)。想想最崩溃的估计是iPhone 8了,身价直接被降了好几个等级。

上面的例子来自于TensorFlow官方iOSDemo,暂且不评述TensorFlow的识别准确度如何,毕竟它还年轻,但是仅凭其识别能力的体现,也给机器学习在移动端的运用带来了无限的可能。

一、TensorFlow(简称TF)

去年,Google资深系统专家Jeff Dean在湾区机器学习大会上隆重介绍了其第二代深度学习系统TensorFlow,一时间网络上针对TensorFlow的文章铺天盖地,揭秘TensorFlow:Google开源到底开的是什么?、Google开源TensorFlow系统,这背后都有什么门道?、如何评价Google发布的第二代深度学习系统TensorFlow?等等文章,TensorFlow的燎原之火一直在燃烧蔓延着,其GitHub上的开源库在此文撰写时,也已经被star:27550,fork:11054了。???? ???? ???? ???? ????

不负众望,Google一直宣称平台移植性非常好的TensorFlow,终于在2016年6月27日,发布0.9版本,宣布移动端支持。TensorFlow v0.9 now available with improved mobile support( 有墙???? ),同时也给出了移动端的Demo,对于代码为生的程序员,身处大数据处理为主导的TalkingData,也小试身手了一把,下载TensorFlow源码,查看编译指南,开始跳坑、填坑之路,也成就了此篇拙文的产生。

如果对Python编程、网络爬虫、机器学习、数据挖掘、web开发、人工智能、面试经验交流。感兴趣可以519970686,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

二、从TensorFlow到iOS静态库

对于iOS平台下如何使用TensorFlow,TensorFlow也给出了详细的编译脚本命令,详情请查看官方文档的命令。

第一步. 工具准备

工欲善其事必先利其器,在开始编译工作之前,需要准备一些编译所必须的工具:

Homebrew: Mac os x 上包管理工具

$ /usr/bin/ruby -e ``"$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/master/install](https://raw.githubusercontent.com/Homebrew/install/master/install))"

Homebrew安装好之后,依次安装三个辅助性编译工具:

$ brew  install libtool   

$ brew  install autoconf   

$ brew  install automake

第二步. 克隆TensorFlow

Google以Apache 2.0开源协议将TensorFlow开源在GitHub上,我们可以直接使用TensorFlow源码。

在任意你想存放TensorFlow源码的地方(建议不要放在桌面。_),clone项目。


$ git clone [https://github.com/tensorflow/tensorflow](https://github.com/tensorflow/tensorflow)

第三步. 编译前准备

在TensorFlow的tensorflow/contrib/makefile/目录下,有很多可使用的编译脚本,其中build_all_ios.sh脚本专门用来一键编译TensorFlow iOS静态库。虽然可以直接使用此脚本进行一键编译,但是因为有墙,某些依赖需要提前做处理。

1、下载protobuf

    protobuf 是编译前唯一需要特殊处理的依赖库,[点击下载](https://github.com/google/protobuf/archive/master.zip),下载protobuf之后,解压,备用。

2、下载googlemock

    虽然protobuf编译脚本autogen.sh中的googlemock链接地址https://googlemock.googlecode.com/files/gmock-1.7.0.zip无法直接下载到,但是细心的人会发现,在浏览器中输入                  https://googlemock.googlecode.com/地址后,会跳转到https://github.com/google/googlemock地址,google在GiHub上的仓库地址。而GitHub上的仓库,我们可以直接的下载,克隆等。

我们直接在GitHub上下载googlemock(点击下载),下载完成后,修改压缩包名字为gmock-1.7.0.zip,修改后将此压缩包移至上一步protobuf文件夹目录下,备用。

3、修改下载依赖脚本,移除protobuf的下载

在tensorflow/contrib/makefile/目录下,download_dependencies.sh脚本用来下载相关依赖,打开此脚本文件,注释掉或者直接删掉git clone https://github.com/google/protobuf.git ${DOWNLOADS_DIR}/protobuf部分,目的是不让脚本去下载protobuf。

上面三步准备好后,接下来就进入静态库编译了。

第四步. 一键编译

前面已经知道在TensorFlow文件夹tensorflow/contrib/makefile/目录下的build_all_ios.sh脚本是用来编译iOS静态库的脚本,因此可以直接执行此脚本,开始静态库的编译工作了。

但是有一个问题大家可能会发现,由于编译TensorFlow需要用到protobuf,但是protobuf使我们自己手动下载的,该怎么让手动下载的protobuf能够直接让build_all_ios.sh脚本使用呢?

答案是复制、粘贴。可能有些low,但是有效。执行命令 build_all_ios.sh之后,立即把之前手动下载的protobuf文件夹拷贝进tensorflow/contrib/makefile/downloads目录。(放心,你拷贝的速度会很快,不会影响编译的执行的。_


$ build_all_ios.sh

一切准备就绪,接下来就是静静的等待编译完成了。在Mac编译的过程中,建议插上电源,最好不要让设备休眠断电,也最好不要去干别的东西,出去溜达一圈,回来后就看到战果了。

编译完成之后,会在tensorflow/contrib/makefile/gen/目录下看到编译的结果,关于这些静态库该如何使用,自己的项目如何应用,请参考TensorFlow iOS Examples

三、遇到的问题

1、googlecode.com被墙了,需要翻墙!(目前测试挂了VPN也没用),这也是上面编译前准备为什么要那么做的原因。

curl: (7) Failed to connect to googlemock.googlecode.com port 443: Operation timed out

解决: 请参考 『第三步. 编译前准备』。

2、没有Xcode。


xcrun: error: SDK "iphoneos" cannot be located

xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: unable to lookup item 'PlatformPath' in SDK 'iphoneos'

+ IPHONEOS_PLATFORM=

解决:安装Xcode,从上面报错的命令中可以看到,在编译静态库的过程中使用了xcrun,而此命令是xCode本身具有的能力。

3、你的Xcode版本不是7.3或以后,或者你有多个Xcode,而默认的安装路径版本不是7.3或以后。

 error: Xcode 7.3.0 or later is required.

exit 1

解决:更新Xcode至最新版本,并且保证默认路径下是最新/版本。

如果Xcode是7.3,并且没有条件更新Xcode,你可以修改tensorflow/contrib/makefile/compile_ios_tensorflow.sh 里的REQUIRED_XCODE_VERSION=7.3.0,为REQUIRED_XCODE_VERSION=7.3。(这样修改,目前还不确定会不会带来一些其他影响,最好是升级你的Xcode)

相关文章

  • 对于TensorFlow框架,你了解多少

    人工智能、机器学习都已走进了我们的日常,尤其是愈演愈热的大数据更是跟我们的生活息息相关,做 人工智能、数据挖掘的人...

  • 了解TensorFlow框架

    2015年9月,Google于TensorFlow开源之际,发布了TensorFlow白皮书,介绍了TensorF...

  • 对于皮肤,你了解多少?

    对于女性来说,几乎人人家里都有护肤品,哪怕是一瓶水,乳液,都是我们用来护肤的,说白了就是保护脸蛋的,但是我们怎么才...

  • 对于甲醛,你了解多少?

    37岁的小王在租住自如出租房后,因急性髓系白血病于2018年7月去世,引发了社会对房子装修安全的关注。小王病逝后,...

  • 对于孩子,你了解多少?

    《捕捉儿童敏感期》孙瑞雪(第一、第二章) 奔三的年纪,身边大部分的同龄人都有了孩子,宝宝出生的时候晒出来的都是初为...

  • 对于盐包,你了解多少?

    2017年4月8日 星期六 晴天 大家好,我是日记星球171号星宝宝吴敏,我正在参加日记星球轻而易举写作法第四期2...

  • 对于友谊,你了解多少?

    友谊,一个需要用尽一辈子去感悟的话题,对于它,自己确实不知道该怎么去表达。用百度百科极其理性的话语来解释——友谊是...

  • 对于近视,你了解多少?

    近视,一直是近几年来的热点。在前几年,近视一般在初中以后多见,随着社会的发展,电脑、手机、平板等电子产品的普及,近...

  • 对于副业你了解多少

    越来越多的人意识到了副业的重要性,可是对于副业了解有多少呢?现在网络上有一个名词叫做“副业刚需”不知道你有没有听说...

  • 对于情绪,你了解多少?

    对于情绪,你了解多少? 其实,我们每一个人都是情绪的专家。 因为,我们日复一日的亲身体验着开心,快乐,生气,沮丧,...

网友评论

    本文标题:对于TensorFlow框架,你了解多少

    本文链接:https://www.haomeiwen.com/subject/swhcxqtx.html