ROS与机器学习(一)——TensorFlow

ROS与机器学习(一)——TensorFlow

1、AlphaGo的大脑——TensorFlow

AlphaGo之所以可以打败所有人,是因为它有一个“最强大脑”,这个大脑就建立在TensorFlow之上。
TensorFlow是Google于2015年11月开源的一个机器学习及深度学习框架,一出现就受到极大关注。
TensorFlow既是一个实现机器学习算法的接口,也是一个执行机器学习算法的框架,如图所示,它的前端支持Python、C++、Go、Java等多种开发语言,后端使用C++、CUDA等实现,可以在众多异构系统上进行移植,例如Android系统、iOS系统、普通CPU服务器,甚至大规模GPU集群。
在这里插入图片描述

除了执行深度学习算法,TensorFlow还可以用来实现很多其他算法,包括线性回归、逻辑回归、随机森林等。TensorFlow建立的大规模深度学习模型的应用场景也非常广泛,包括语音识别、自然语言处理、计算机视觉、机器人控制、信息抽取、药物研发等,使用TensorFlow开发的模型在这些领域也获得了最前沿的成果。

2、TensorFlow基础

2.1 安装TensorFlow

TensorFlow的安装可以直接使用Python包管理工具pip完成。首先使用如下命令在Ubuntu系统中安装pip工具:

sudo apt-get install python-pip python-dev

然后设置TensorFlow的下载地址并进行安装:

export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/apu/tensorflow-1.4.0-cp27-none-linux_x86_64.whl
sudo pip install --upgrade $TF_BINARY_URL

安装过程中可能会遇到pip版本过低导致安装失败,需要使用如下命令更新为新版的pip:

sudo -H pip install --upgrade pip

再重新运行以上TensorFlow的安装命令,终端安装进度的显示如图所示。
在这里插入图片描述
安装时长根据网络情况而定,如果网络较好,10min左右就可以完成安装,并看到如图所示安装成功的日志信息。
在这里插入图片描述
安装成功后可以在终端中打开Python环境,输入以下代码,使用TensorFlow实现“Hello,TensorFlow”例程。
在这里插入图片描述
在这里插入图片描述
运行tf.Session()后会出现一条关于CPU的提示信息,这是因为我们直接了TensorFlow的二进制文件,没有针对所使用的计算机硬件配置编译选项,所以无法发挥出TensorFlow的最佳性能。若要解决此问题,可以从源码配置入手并编译TensorFlow。

2.2 核心概念TensorFlow中的核心概念。

“Hello,TensorFlow”并不是一个简单的日志输出,而是使用由TensorFlow接口构建的节点组成的一个计算图。TensorFlow框架中的核心概念。

2.2.1 图(graph)

TensorFlow中的计算可以表示为一个有向图(directed graph),或者称为计算图(computation graph),其中每个运算操作(operation)都将作为一个节点(node),节点与节点之间的连接称为边(edge)。这个计算图用于描述数据的计算流程,负责维护和更新状态。用户可以使用Python、C++、Go、Java等多种语言设计这个通过数据计算的有向图,也可以对计算图的分布进行条件控制或循环操作。
如图所示是一个线性回归模型的计算图。这个计算图中的每个节点描述了一种运算操作,可以有任意多个输入和输出。在计算图中流动(flow)的数据称为张量(tensor),故得名TensorFlow。tensor的数据类型既可以事先定义,也可以根据计算图的结构推断得出。有一类特殊边中没有数据流动,称这种边为依赖控制,作用是让它的起始节点执行完成后再执行目标节点,用户可以使用这样的边进行灵活的条件控制,比如限制内存使用的最高峰值。
在这里插入图片描述

2.2.2 会话(session)

客户端通过创建会话与TensorFlow系统进行交互,会话持有并管理TensorFlow程序运行时的所有资源。会话接口提供的一个主要操作函数时Run(),以需要计算的输出名称和替换某些输出节点张量的操作集合作为其参数输入。大多数TensorFlow的使用都是针对一个图启动一个会话,然后执行整个图或者通过Run()函数多次执行分离的子图。

2.2.3 变量(variable)

在大多数计算中,图都是执行多次的,大多数张量在一次执行后不会存活。然而,变量是一种特别的操作,可以返回一个在图执行若干次后依然存活的可变张量的句柄。这个句柄可以传递给一系列特定的操作,例如Assign和AssignAdd(等同于+=)就可以改变其引用的张量。对应TensorFlow在机器学习中的应用,模型的参数一般就存放在变量引用的张量中,并作为模型训练图时的一部分进行更新。

猜你喜欢

转载自blog.csdn.net/weixin_45661757/article/details/115284707