这显卡卖家说有1g显存吃鸡,我不懂看电脑,你们说是不是真的有1g

谷歌开源深度学习工具—TensorFlow 初探 - 简书
谷歌开源深度学习工具—TensorFlow 初探
是谷歌开源的深度学习工具包,它将深度学习复杂的计算过程抽象成了数据流图(Data Flow Graph),并提供简介灵活的高级抽象接口,让小白用户通过简单的学习就可以使用「高大上」的深度学习了。当谷歌被问到为什么要开源 TensorFlow 时,他们的回答是:「我们相信机器学习是未来创新产品和技术的关键因素」。其实目前我们生活的很多方面已经被机器学习深切的影响着了,从谷歌搜索到淘宝购物,以及在刚刚结束的老罗手机发布会上,引起台下欢呼不断的语音输入以及 「BigBang」,背后的核心技术都是机器学习。因此,我觉得广大程序员有必要学习下机器学习,以免被很快就会到来的「未来」所抛弃。
官方的是最详细的,以我本人的电脑(MacBook Pro,python 2.7)为例,安装过程如下:
// 指定 TensorFlow 地址
export TF_BINARY_URL=/tensorflow/mac/cpu/tensorflow-0.11.0rc1-py2-none-any.whl
// 使用 pip 安装(如果没有 pip,得先安装 pip)
sudo pip install --upgrade $TF_BINARY_URL
安装好后,可以进入 python 交互界面,执行以下代码确认是否安装成功:
&&& import tensorflow as tf
&&& hello = tf.constant('Hello, TensorFlow!')
&&& sess = tf.Session()
&&& print(sess.run(hello))
Hello, TensorFlow!
&&& a = tf.constant(10)
&&& b = tf.constant(32)
&&& print(sess.run(a + b))
整体工作方式
TensorFlow 最基本的一次计算过程是这样的:接受 n 个固定格式的数据输入,通过给定的高级函数,转化为 n 个 Tensor 格式的输出。当然一次机器学习的过程会有很多次这样的计算,一次计算的输出可能是下一次计算的(部分或全部)输入,TensorFlow 将这一系列的计算过程抽象为了一张数据流图(Data Flow Graph),如图:
一张复杂的数据流图
上图中从数据 Input 开始,沿着有向图进行计算,图中每个节点都是一次计算,称为 op(option),TensorFlow 中数据以 Tensor 为格式,输入一个 Tensor ,经过一次 op 后输出另一个 Tensor,然后根据数据流图进入下一个 op 作为输入,因此,整个计算过程其实是一个 Tensor 数据的流动过程,所以谷歌将这个系统形象的叫做 TensorFlow。
有了数据流图后下一个问题是如何在各种设备上很好的运行,TensorFlow 通过一个会话(Session)来控制整个数据流图的执行。TensorFlow 一个很大的优点是将复杂的运算(如矩阵运算,softmax)封装成了高级函数,用户只要使用就好了,在内部,TensorFlow 将这些函数转化成可以高效在 CPU 或 GPU 执行的机器码。Session 的主要作用是将这张数据流图合理的切分(尽量减少 Session 与 CPU 或 GPU 之间的交互,因为很慢),按照一定的顺序提交给 CPU 或者 GPU,然后(可能)还进行一些容错的机制,总之 Session 就是负责高效地让数据流图被 CPU 或 GPU 执行完成的。
如果读者对 spark 熟悉,看完以上介绍后会不会觉得其实 TensorFlow 的整个工作流程其实跟 Spark 有很多类似之处(我看完文档之后是这样认为的)。 TensorFlow 的数据流图对应于 Spark 的 DAG,TensorFlow 的 Tensor 对应于 Spark 的 RDD, TensorFlow 的 Session 对应于 Spark 的 SparkContext。待后面深入学习后再分析分析他们的异同。
其实很多概念上面已经提到,这里统一介绍下,不过是最详细的。
数据流图:用来逻辑上描述一次机器学习计算的过程。
Session:负责管理协调整个数据流图的计算过程。
op:数据流图中的一个节点,也就是一次基本的操作过程。
Tensor:所有 TensorFlow 中计算的数据的格式,是一个 n 维的数组,如 t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 。
Variable:这个在上面没有提到。之前我们说一个 Tensor 经过一次 op 后会转化为另一个 Tensor,完成之后上一步的输入 Tensor 就会被回收掉。如果有些数据(如模型)我们需要一直保存,每次迭代计算只是改变其值,这时我们就需要 Variable,Variable 本质上也是一个 Tensor,只不过他是不会被回收,常驻的 Tensor。
关于 TensorFlow 的基本使用,其实还是建议看官网,我这边列一个小的 demo 大致看下一个最基本的 TensorFlow 是怎么写的。
// 导入 tensorflow
import tensorflow as tf
// 上面说了数据是从输入到 op 再到输出,用 tf.constant() 生成的是一个源 op,
// 是一个不需要输入(输入已经定义在代码里了),只有输出的 op。
// matrix1、matrix2 都是常量 op
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
// 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
// 返回值 'product' 代表矩阵乘法的结果。
product = tf.matmul(matrix1, matrix2)
// 创建 session
sess = tf.Session()
// 使用 session 运算整个数据流图。这里我们可以看到,
// 定义整个计算过程的时候,我们是从数据输入的方向上往下定义的,
// 而给 session 运行的时候,我们只把最后我们想要结果的那个方法
// 给了 session,说明 session 会根据最终的那步,逆向去追溯计算
// 过程,从而构建整个数据流图(猜的)。
result = sess.run(product)
//输出 [[ 12.]]
print result
//运行结束,关闭 session
sess.close()
看到这里,其实会发现 TensorFlow 并不仅仅是一个训练深度神经网络的工具,它更像是一个计算框架,其实可以在其基础上实现各种算法,有朝一日,如果越来越多的开发者参与其中,构建出更丰富的机器学习库,替代 spark 也是有可能的(虽然我觉得可能性不高)。
一个简单的机器学习实例
给出了一个利用 MNIST 数据集训练图像识别模型的入门例子,我这里做一些简单的分析。
MNIST 数据集包含了一个训练集和一个测试集,集合中包含一些 28 像素 X 28 像素的图片(这些图片是手写的 0-9 的数字),以及每张图片的真实数字,我们的目的是通过训练集训练出一个机器学习模型,用以预测任意的手写输入图片所对应的数字。
文档中给的入门示例是一个逻辑回归模型。输入是28 X 28 像素的图片,为了方便,我们将其转化为一个长度为 28 * 28=784 的数组;输出是用 softmax 回归后该图片属于 0-9 各个数字的概率数组。整个模型通过随机梯度下降的方法进行训练,详细的文档里都有,我就其代码简单分析一下:
// 导入 tensorflow
import tensorflow as tf
// 导入处理 MNIST 数据集的工具类
import input_data
// 加载 MNIST 数据集,获得一个封装好的对象 mnist
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
// 设置输入(即手写图像),placeholder 表示 x是一个占位符,
// shape 的 None 表示输入数据的第一维可以任意大小
x = tf.placeholder(tf.float32, shape=[None, 784])
// 设置针对输入图像,其期望的输出
y_ = tf.placeholder(tf.float32, shape=[None, 10])
// 定义 Variable,用于存储隐藏层的权重,W 是一个二维权重矩阵,
// W[i][j] 表示第 i 个像素属于第 j 个数字的概率;b 是一维数组,b[i]
// 表示第 i 个数字的偏移量。因此,要求输入 x 属于各个数字的概率
// 公式为:W * x + b
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
/** 定义好需要的参数变量后,就可以设置训练过程了,训练过程主要分为 3 步:
1. 定义隐藏层的输入输出过程
2. 定义损失函数
3. 选择训练方法开始训练 **/
// 1.定义隐藏层的输入输出过程 :
之前我们说用 softmax 回归模型来做隐藏层,TensorFlow 已经实现了
softmax 的具体方法,所以我们只要一行代码就能表示整个前馈的过程
y = tf.nn.softmax(tf.matmul(x, W) + b)
// 2.定义损失函数:
我们使用交叉熵来衡量结果的好坏
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
// 3.选择训练方法开始训练:
由于我们已经知道了损失函数,我们的训练目的是让损失函数最小,
这里我们使用梯度下降的方法求最小值
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
// 定义好训练过程后,就可以开始真正的训练过程了
// 初始化 session
sess = tf.Session()
//加载所有 variable
init = tf.initialize_all_variables()
sess.run(init)
// 使用随机梯度下降的方法,分批次多次训练
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
//这里随机获取的 batch_xs, batch_ys 用来填充之前定义的占位符 x, y_
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
我们可以看到,只要告诉 TensorFlow 待训练参数、损失函数、具体的训练方法,区区三行代码,它就能自动地进行训练出一个图像识别模型。当然,这只是最简单的一个逻辑回归模型,要想获得好效果,需要用到 卷积神经网络(CNN),等后面深入学习后再跟读者分享。
本文简单介绍了 TensorFlow 的一些基本的概念和工作方式,后面有精力的话再深入的学习下。另外,由于自己对机器学习不是很熟悉,对 TensorFlow 也是刚接触,所以文中可能会有比较多低级错误,望读者看到后指出。当前位置:
>> 必读内参:独家编译60P+谷歌下代人工智能演讲PPT
必读内参:独家编译60P+谷歌下代人工智能演讲PPT
来源:智东西
   本周Google 宣布开源自己的最新机器学习系统TensorFlow。Google资深系统专家Jeff Dean还在10月份的湾区机器学习大会做了演讲,题为《智能计算机系统的大规模深度学习》。这期的必读内参,智东西独家制作了Jeff Dean演讲的中文版以及一系列相关报告呈献给读者。    文 | 小智    本周Google CEO Sundar Pichai 在官方博客宣布开源自己的最新机器学习系统TensorFlow。Google资深系统专家Jeff Dean还在10月份的湾区机器学习大会做了演讲,题为《智能计算机系统的大规模深度学习》。这个开源的引擎可以使得全世界都能自由地分享底层代码。    TensorFlow是什么意思呢?Tensor就是张量,也就是N维数组;其本身采用的是DataFlow数据流模型。所以人工智能科技公司出门问问的NLP工程师李理形容TensorFlow为“张量从图的一端流动到另一端”。Google相信它可以加速人工智能的发展。    Jeff Dean是更是硅谷的传说级人物,据说编译器从不会给这位大神警告,因为在Dean面前,编译器才是被警告的哪一位。大神还是挺帅的~    据Dean所述,TensorFlow不仅非常适合深度学习,也同样适合是其他形式的人工智能,包括强化学习和逻辑回归。这也就是其与Google上一代的系统DistBelief的主要不同。DistBelief非常擅长深度学习并帮助Google在2014年赢得了重要的大型视觉识别的挑战。但是Dean说TensorFlow还要比之快上一倍。    还是先来介绍一下什么是深度学习。深度学习是一种日益强大的人工智能形式。通过分析某种事物成千上万的照片,这种人工智能技术就能学会识别该事物,哪怕是它从来没有见过的。比如猫和狗,树和云,鲜花和食物等等。    再来介绍一下深度学习的基本原理。深度学习依赖于近似人类的大脑神经元的神经网络系统。大致上是这样的,人们向系统输入海量数据,系统就学会执行一项任务。举例而言,给它们无数的早午晚餐的照片,系统就能学会认识一顿饭是什么样子的。给它们海量的口语,他们就能听懂你说什么。给它们海量的老电影的对话,它们就能进行一个对话,尽管不算完美,但是也还不错啦。    近年来,其他公司和研究人员在这人工智能方面也取得了巨大的进步,包括Facebook、微软和Twitter等等。他们中的一些已经开源了类似TensorFlow的软件。包括纽约大学研究者原创的Torch(这些人中的许多现在都在Facebook),也包括Caffe和Theano。但是Google这次的动作却更为显著,因为Google的人工智能引擎被人们认为是世界上最先进的。    Google使用c++编程语言建立底层TensorFlow。但在为这个人工智能引擎开发应用的过程中,程序员既可以使用c++也可以使用像Python这种最受深度学习研究者欢迎的语言。Google希望外界能够将TensorFlow扩大到其他语言的工具,包括Google Go,Java,甚至是Javascript,这样程序员就能掌握更多的构建程序的方式。    Dean的演讲的主要介绍了起始于2011年的Google大脑项目,各种万亿级的原始数据如何被系统自动消化;介绍了Google是如何快速训练大型模型系统,以及深度学习在Google有哪些显著的影响;着重介绍了第二代深度学习系统TensorFlow的开发初衷,应用例子以及性能优势。    深度学习创业公司Skymind的经营者克里斯·尼科尔森(Chris Nicholson)说:“只是一个很好玩的事情。Google领先了其他公司5-7年,而他们将工具开源,就会让其他所有人的机器学习做得更好。”    可以肯定的是,Google并没有给出所有的秘密。目前,该公司只是开源了这个人工智能引擎的一部分。他们只是分享了引擎顶部的一些算法,却不包含驱动引擎的先进的硬件底部代码(显然这部分是要收费的)。但Google至少给出了核心软件的重要数据,他们以前可从来没这么做过。    谷歌成为互联网最主导力量在很大程度上是因为其数据中心里独特而强大的软件和硬件,软硬件都能帮助运行所有的在线服务,这样就可以兼容来自全球各地的前所未有的数据和流量。通常情况下,Google直到开始使用下一代设计才会分享现有的软件。即便如此,他们也只是共享介绍其技术的研究论文,却并不开源其代码。这就是Google保持技术优势的方法。    然而这次的TensorFlow,Google显然更给力。这次的开源打包开放了一大堆东西。在开源工具里,谷歌将提供一些神经网络模型和算法的示例,包括识别照片模型,识别手写数字以及分析文本。Dean说:“我们将提供在公共数据集训练这些模型所需的所有算法。”Dean认为这次是一个相当大的转变,TensorFlow能帮助很多公司开创性的建立数据中心软件,包括Google文件系统,MapReduce和数据块定位。    根据Google工程师Rajat Monga的说法,TensorFlow在某些方面仍然绑定了Google的内部架构,这也就是为什么Google没有开放所有的TensorFlow。尼科尔森指出,你也可以打赌,Google保留一部分代码是为了维持其本身的优势。    然而,不少业界人士认为,Google这次开源的版本只是一个新的单机深度学习工具包,而市面上真正缺乏的能够支持大规模深度学习的分布式框架或系统,这次的TensorFlow并没有提供。Google也并没有提供测评数据显示TensorFlow想必已有的单机深度学习工具在性能上有哪些优势。出门问问CEO李志飞评价TensorFlow“对学术界意义不大,对工业界意义挺大”。    Dean说:“我们期待大家能接纳TensorFlow为众多机器学习算法中很好的一种,并能够通过众多不同的有趣方式来改善TensorFlow。”    谷歌并没有把这次的开源项目像以往其他的开源软件一样看成是独立第三方。谷歌本身会在网站Tensorflow.org管理该项目。Google在Apache 2许可下共享代码意味着任何人都可以按照自己的意愿免费试用代码。Dean说:“我们的许可条款应该足以说服大家,这真的是一个开放的产品”。    其他人可能不同意。深度学习创业公司DeepMind,尽管已经归Google所有,但还是在使用Torch。但至少,一个开源TensorFlow给开发者提供了更多的选择。这本身就是一件好事。    多伦多大学专攻深度学习的杰夫o辛顿教授的博士生Jimmy Ba表示:“在过去的三倒四年里,深度学习领域的公平竞争促进了许多库的建立,这些都使得研究人员能够更专注于他们的模型。所以人们其实不必担心潜在的软件工程”。    即使TensorFlow在手,建立深度学习应用程序仍然需要一些严格的工艺。但这也可能会在未来几年发生改变。Dean指出,谷歌深度学习开源项目和谷歌深度学习云服务不是相互排斥的。但在短期内,谷歌只对分享代码感兴趣。但与此同时,Monga认为这也将整体提高机器学习的水平,滋生各种各样的新想法。这些新想法仍然会找到它们的路线重新反馈会Google。“任何机器学习的进步,也会成为我们的进步”。
本文(必读内参:独家编译60P+谷歌下代人工智能演讲PPT)仅代表作者个人观点,与广东之窗无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。广东之窗刊载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行;新闻纠错:
本月点击排行
总编信箱:
法律支持:广东卓建律师事务所 刘云海律师 粤ICP备号-2
未经授权不得镜像、转载、摘抄本站内容,违者必究!
Copyright & 2017 IGDZC. All Rights Reserved
广东之窗 版权所有您正在使用IE低版浏览器,为了您的雷锋网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
发私信给Ticwear
导语:Tensor Flow到底是什么?除了关注谷歌开源,我们更需要的,是关注背后深度学习的力量。
同步到新浪微博
Ticwear是由人工智能公司出门问问于日发布的全球首款中文智能手表操作系统,得到了媒体和用户的一致好评。出门问问一直在寻找人工智能在可穿戴设备上的最佳落地方式,以及最适合自然语音交互的载体。Ticwear用到的“神经网络”、“自然语言”、“深度学习”、“语音识别”等技术,比所谓机器人的人工智能在技术层面上一样都不少。
当月热门文章
为了您的账户安全,请
您的邮箱还未验证,完成可获20积分哟!
您的账号已经绑定,现在您可以以方便用邮箱登录谷歌开源TensorFlow系统 背后都有什么门道?_网易科技
谷歌开源TensorFlow系统 背后都有什么门道?
用微信扫码二维码
分享至好友和朋友圈
网易科技讯 7月19日消息,据国外媒体报道,作为谷歌旗下最重要的人工智能系统,TensorFlow功能强大。其中包含的一些工具可以自动识别声音和图像,而另一些工具则可以根据上下文关系理解词语含义。同时,这也是一个开源系统,允许任何人下载源码。通过将所有工具开源,TensorFlow能够让开发人员打造出高度智能化的产品。深度学习算法人工智能并不是什么新奇的概念。在1956年的一次大会上,信息论之父克劳德·艾尔伍德·香农(Claude Elwood Shannon)就提出了关于机器人工智能的相关概念,并预计将于20年之内解决这一问题。显然这一切并未发生。事实证明,人类的思维太过复杂,根本无法用简单的逻辑语句进行编码。许多计算机科学家都试图使计算机具有专业思维能力,但在信息理解上总会有巨大偏差。简单的说,基于逻辑规则的机器系统并不具备人类智力。相比之下,类似于TensorFlow之类的人工智能系统本身具有学习能力。因此谷歌也在开源TensorFlow不断改进自身算法的方式,允许人工智能知识有限的开发人员也能够开发出有用的应用程序。事实上,TensorFlow并不完美,但其可以帮助用户进行信息筛选,节省大量时间。其中包含的反馈机制也可以让系统本身不断从错误中学习改进。谷歌虽然尚未打造无所不能的人工智能系统,但却加强了人类和机器的有效协作。开源TensorFlow做出开放源码决定的是谷歌首席科学家杰夫·迪恩(Jeff Dean),他认为常规步骤下的创新工作进展过于缓慢。常常是一个谷歌开发人员写出代码,甚至要等上几个月才会在一次会议上进行讨论,此外另一个开发人员会再花上几个月的时间重复这一过程。迪恩认为,开源TensorFlow能够显著加速这一进程。通过开源,谷歌开发人员能够实时与科学界进行协作。谷歌之外的人才也能够参与TensorFlow源代码的编写。而机器学习技术的共享能够广泛吸引更多的技术人才完善TensorFlow系统。TensorFlow项目负责人Rajat Monga指出,“通过将TensorFlow开源,我们能够与大学以及诸多初创企业的开发人员进行合作,接触新的理念,推进技术发展。开源使得代码开发的速度更快,TensorFlow也更加功能多样,灵活方便。”打造价值生态系统从传统观念看,谷歌开源机器学习工具似乎很奇怪。我们无法想象可口可乐会向社会公布其配方。而包括苹果在内的许多高科技公司也对新产品守口如瓶。即便是谷歌,也有很多处于保密状态,比如其搜索算法。然而世界正在不断变化。曾经通向成功的可靠途径是优化独有的价值链。通过磨砺企业内部流程以及拓展自身规模,不断提高自身在客户以及供应商之中的优势地位,从而创造更高的效率。这就是企业打造自身竞争优势的主要方式。
如今,最成功的产品逐步转变为价值生态系统。虽然谷歌聘用的都是杰出人才,但其改进技术的唯一方式就是与更大规模的整个科学界进行合作。通过开源,可以借助社会广大技术人员使用谷歌的技术开发产品。这就是为什么很多高科技公司会开源其关键技术。除了谷歌开源其TensorFlow之外,Facebook也宣布开源其人工智能工具库,特斯拉也开源其电动汽车专利,而近期IBM也开源其量子计算平台。今天,我们生活在互联经济时代。降低成本以及资产优化不再是绝对的竞争优势,而打造价值生态系统才是真正意义上的竞争优势。相应的能力优势不再是金字塔的顶端,而是在网络中心。(宁宇)
本文来源:网易科技报道
责任编辑:齐亚伦_NT4779
用微信扫码二维码
分享至好友和朋友圈
加载更多新闻
热门产品:   
:        
:         
热门影院:
阅读下一篇
用微信扫描二维码
分享至好友和朋友圈

我要回帖

更多关于 1g显存跑吃鸡 的文章

 

随机推荐