说起 TensorFlow,就不得不说这是很多创业公司的福音,因为他们大都没有能力去理解并开发一个与国际同步的深度学习系统,所以TensorFlow 会大大降低深度学习在各个行业中的应用难度。谷歌把这个项目开源,受到欢迎那是必然的。
在 GitHub 上,TensorFlow 从去年开始就成为了广受欢迎的机器学习开源项目。GitHub 发布的 2017 年度开发者报告显示,TensorFlow 是被 fork 最多的项目,其中有 7300 人为 TensorFlow 做出了贡献。
还有一点,TensorFlow 跟我们的关系是越来越密切的。现在国内不少大型电商使用的客服就是基于 TensorFlow 开发的。在 TensorFlow 的官网上,我们可以看到,国内的小米、中兴、京东等企业,也在使用 TensorFlow。
而 Google Brain 发布的可以帮你画画的人工智能「Quick, Draw! 」、「AutoDraw」,也是基于 TensorFlow 开发的。
可见,Tensor Flow 是越来越贴近我们的生活了。
TensorFlow 的特征
1.高度灵活性
TensorFlow 不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图,你就可以使用 TensorFlow。当然用户也可以自己在 Tensorflow 基础上写自己的“上层库”。
万一你发现找不到想要的底层数据操作,你也可以自己写一点c++代码来丰富底层的操作。
2.真正的可移植性
TensorFlow 可以在台式机,手机及服务器等多种平台使用。如果想要在没有特特殊硬件的前提下,想在自己的笔记本上跑一跑机器学习的新想法,TensorFlow 也能做到。与此同时,TensorFlow 还能做到将你的训练模型在多个 CPU 上规模化运算,又不想修改代码,将你的训练好的模型作为产品的一部分用到手机 app 里,等等很多功能。
3.将科研和产品联系在一起
使用 Tensorflow 可以让应用型研究者将想法迅速运用到产品中,也可以让学术性研究者更直接地彼此分享代码,从而提高科研产出率。
4.自动求微分
基于梯度的机器学习算法会受益于 Tensorflow 自动求微分的能力。作为 Tensorflow 用户,你只需要定义预测模型的结构,将这个结构和目标函数结合在一起,并添加数据,Tensorflow 将自动为你计算相关的微分导数。
5. 多语言支持
Tensorflow 有一个合理的c++使用界面,也有一个易用的 python 使用界面来构建和执行你的 graphs。你可以直接写 python/c++ 程序,也可以用交互式的 ipython 界面来用 Tensorflow 尝试些想法。
6.性能最优化
Tensorflow 给予了线程、队列、异步操作等以最佳的支持,Tensorflow 让你可以将你手边硬件的计算潜能全部发挥出来。你可以自由地将 Tensorflow 图中的计算元素分配到不同设备上,Tensorflow 可以帮你管理好这些不同副本。
了解更多关于 Tensorflow: http://www.tensorfly.cn/
Tensorflow 游乐场
Tensorflow 游乐场是一个由 Tensorflow 建立起来的可以在浏览器中训练神经网络的平台,在这里,你可以亲自动手训练自己的神经网络,并且很容易的对它有一个初步的认识。
这个界面由 DATA(数据种类),FEATURES(数据特征),HIDDEN LAYER(神经网络的层数),OUTPUT(输出)和其他设置参数构成,对于还没有建立起对神经网络的认识的新手来说,其他参数可以完全默认,只需要看上面四个部分即可。
DATA
这里提供了四种类型的数据,而神经网络要做的就是,把这些数据中的橙点和蓝点收集起来分析,之后给出它们现在所在以及接下来的两种点将会在的区域。
FEATURES
分类数据最重要的是特征,这两种数据的特征就是它们的坐标(X1,X2),其他的特征都是由它们衍生而来,我们要做的就是把这些特征输入给神经网络,然后让它调整权重最后得出输出
HIDDEN LAYER
这里的每一层的每个神经元都会对输出进行组合,然后计算出结果,下一层的神经元则会根据上一层的输出的准确性确定它们的比重,从而再得出输出。
神经网络最大的特点在于,我们不需要完全找出一种数据的特征,只需要有足够多的神经网络层数和神经元,它就会自己找出最有用的特征。
下面就是一个例子,我们把所有的特征输入,然后只加入一层神经元。
可以看到它成功的分离的两种类型的点。
现在我们只输入最基础的两个特征,然后加入最多的神经元,然后就会发现浏览器明显的慢了下来……
但是它依然可以完成任务。
神经网络的优势就在于此,即使我们不能想出更多的特征,只要通过多层神经网络和相当数量的神经元,就可以让神经网络自己学到哪些特征是最有用的。不过,最起码我们还是要动动脑子多输入几个特征,像刚才那样加入大量的神经元已经让浏览器开始变得缓慢了。