DL框架之Tensorflow:深度学习框架Tensorflow的简介、安装、使用方法之详细攻略
目录
Tensorflow的简介
1、描述
2、TensorFlow的六大特征
3、了解Tensorflow
4、TensorBoard:可视化学习
Tensorflow的安装
TensorFlow基础知识架构
1、基础知识架构
2、计算图与会话
2、相关概念
TensorFlow的使用方法
1、基础函数
2、输出tensorflow的版本号
案例应用
1、使用常量和占位符进行计算
2、输出w、b和计算两个数值相乘
3、ML之LoR:利用LoR算法(tensorflow)对mnist数据集实现手写数字识别
Tensorflow的简介
TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief 。
TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在内的多个项目以及各类应用程序接口(Application Programming Interface, API)。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码。
2015年11月9日,Goggle宣布对Tensorflow开源。一时间Tensorflow在CitHub上面的下载量跃升至全站第2位,可见全世界兴趣爱好者对这款开源软件的热情。作者曾在前言中说过,现如今许多知名的IT企业,Google、Facebook、Microsoft、Apple甚至国内的百度,无不在机器学习研究领域给予非常大的资金和人力的投人;但是,鲜有将内部使用的平台公之于众的。
许多人开始以为Tensorflow只是一个用于深入学习研究的系统,其实不然。应该说,这是一个完整的编码框架。就如同我们按照Python编程语法设计程序一样,Tensorflow内部也有自己所定义的常量、变量、数据操作等要素。不同的是,Tensorflow使用图(Graph)来表示计算任务,并使用会话(Session)来执行图。
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究。
参考文章
Tensorflow英文官网
Tensorflow中文社区
Tensorflow官方教程
Tensorflow新手入门
Tensorflow中文文档
1、描述
2015年10月05日,谷歌为TensorFlow提交了注册商标申请(登记编号86778464),并这样描述它:
(1)、用以编写程序的计算机软件;
(2)、计算机软件开发工具;
(3)、可应用于人工智能、深度学习、高性能计算、分布式计算、虚拟化和机器学习这些领域;
(4)、软件库可应用于通用目的的计算、数据收集的操作、数据变换、输入输出、通信、图像显示、人工智能等领域的建模和测试;
(5)、软件可用作应用于人工智能等领域的应用程序接口(API)。
2、TensorFlow的六大特征
高度的灵活性:TensorFlow 不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图,你就可以使用Tensorflow。你来构建图,描写驱动计算的内部循环。我们提供了有用的工具来帮助你组装“子图”(常用于神经网络),当然用户也可以自己在Tensorflow基础上写自己的“上层库”。定义顺手好用的新复合操作和写一个python函数一样容易,而且也不用担心性能损耗。当然万一你发现找不到想要的底层数据操作,你也可以自己写一点c++代码来丰富底层的操作。
真正的可移植性(Portability):Tensorflow 在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。想要在没有特殊硬件的前提下,在你的笔记本上跑一下机器学习的新想法?Tensorflow可以办到这点。准备将你的训练模型在多个CPU上规模化运算,又不想修改代码?Tensorflow可以办到这点。想要将你的训练好的模型作为产品的一部分用到手机app里?Tensorflow可以办到这点。你改变主意了,想要将你的模型作为云端服务运行在自己的服务器上,或者运行在Docker容器里?Tensorfow也能办到。Tensorflow就是这么拽 :)
将科研和产品联系在一起:过去如果要将科研中的机器学习想法用到产品中,需要大量的代码重写工作。那样的日子一去不复返了!在Google,科学家用Tensorflow尝试新的算法,产品团队则用Tensorflow来训练和使用计算模型,并直接提供给在线用户。使用Tensorflow可以让应用型研究者将想法迅速运用到产品中,也可以让学术性研究者更直接地彼此分享代码,从而提高科研产出率。
自动求微分:基于梯度的机器学习算法会受益于Tensorflow自动求微分的能力。作为Tensorflow用户,你只需要定义预测模型的结构,将这个结构和目标函数(objective function)结合在一起,并添加数据,Tensorflow将自动为你计算相关的微分导数。计算某个变量相对于其他变量的导数仅仅是通过扩展你的图来完成的,所以你能一直清楚看到究竟在发生什么。
多语言支持:Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs。你可以直接写python/c++程序,也可以用交互式的ipython界面来用Tensorflow尝试些想法,它可以帮你将笔记、代码、可视化等有条理地归置好。当然这仅仅是个起点——我们希望能鼓励你创造自己最喜欢的语言界面,比如Go,Java,Lua,Javascript,或者是R。
性能最优化:比如说你又一个32个CPU内核、4个GPU显卡的工作站,想要将你工作站的计算潜能全发挥出来?由于Tensorflow 给予了线程、队列、异步操作等以最佳的支持,Tensorflow 让你可以将你手边硬件的计算潜能全部发挥出来。你可以自由地将Tensorflow图中的计算元素分配到不同设备上,Tensorflow可以帮你管理好这些不同副本。