
Tensorflow是最火的机器学习框架之一利用tensorflow大家可以轻松编写诸多深度学习程序。为增进大家对tensorflow的认识本文将对tensorflow的张量类型和tensorflow的几大特征予以介绍。如果你对本文内容具有兴趣不妨继续往下阅读哦。一、TensorFlow张量张量可理解为一个 n 维矩阵所有类型的数据包括标量、矢量和矩阵等都是特殊类型的张量。TensorFlow 支持以下三种类型的张量1. 常量constant常量是其值不能改变的张量。2. 变量variable当一个量在会话中的值需要更新时使用变量来表示。例如在神经网络中权重需要在训练期间更新可以通过将权重声明为变量来实现。变量在使用前需要被显示初始化。另外需要注意的是常量存储在计算图的定义中每次加载图时都会加载相关变量。换句话说它们是占用内存的。另一方面变量又是分开存储的。它们可以存储在参数服务器上。3. 占位符placeholder用于将值输入 TensorFlow 图中。它们可以和 feed_dict 一起使用来输入数据。在训练神经网络时它们通常用于提供新的训练样本。在会话中运行计算图时可以为占位符赋值。这样在构建一个计算图时不需要真正地输入数据。需要注意的是占位符不包含任何数据因此不需要初始化它们。二、TensorFlow特征1.高度的灵活性TensorFlow 不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图你就可以使用Tensorflow。你来构建图描写驱动计算的内部循环。我们提供了有用的工具来帮助你组装“子图”(常用于神经网络)当然用户也可以自己在Tensorflow基础上写自己的“上层库”。定义顺手好用的新复合操作和写一个python函数一样容易而且也不用担心性能损耗。当然万一你发现找不到想要的底层数据操作你也可以自己写一点c代码来丰富底层的操作。2.可移植性Tensorflow 在CPU和GPU上运行比如说可以运行在台式机、服务器、手机移动设备等等。想要在没有特殊硬件的前提下在你的笔记本上跑一下机器学习的新想法?Tensorflow可以办到这点。准备将你的训练模型在多个CPU上规模化运算又不想修改代码?Tensorflow可以办到这点。想要将你的训练好的模型作为产品的一部分用到手机app里?Tensorflow可以办到这点。你改变主意了想要将你的模型作为云端服务运行在自己的服务器上或者运行在Docker容器里?Tensorfow也能办到。3.科研、产品紧密相联过去如果要将科研中的机器学习想法用到产品中需要大量的代码重写工作。那样的日子一去不复返了!在Google科学家用Tensorflow尝试新的算法产品团队则用Tensorflow来训练和使用计算模型并直接提供给在线用户。使用Tensorflow可以让应用型研究者将想法迅速运用到产品中也可以让学术性研究者更直接地彼此分享代码从而提高科研产出率。4.自动求微分基于梯度的机器学习算法会受益于Tensorflow自动求微分的能力。作为Tensorflow用户你只需要定义预测模型的结构将这个结构和目标函数(objective function)结合在一起并添加数据Tensorflow将自动为你计算相关的微分导数。计算某个变量相对于其他变量的导数仅仅是通过扩展你的图来完成的所以你能一直清楚看到究竟在发生什么。5.多语言支持Tensorflow 有一个合理的c使用界面也有一个易用的python使用界面来构建和执行你的graphs。你可以直接写python/c程序也可以用交互式的ipython界面来用Tensorflow尝试些想法它可以帮你将笔记、代码、可视化等有条理地归置好。当然这仅仅是个起点——我们希望能鼓励你创造自己最喜欢的语言界面比如GoJavaLuaJavascript或者是R。6.性能最优化比如说你又一个32个CPU内核、4个GPU显卡的工作站想要将你工作站的计算潜能全发挥出来?由于Tensorflow 给予了线程、队列、异步操作等以最佳的支持Tensorflow 让你可以将你手边硬件的计算潜能全部发挥出来。你可以自由地将Tensorflow图中的计算元素分配到不同设备上Tensorflow可以帮你管理好这些不同副本。