每个电子工程师都应该了解 TensorFlow

今日头条

1100人已加入

描述

通过吉姆哈里森

我试图想出一个不能利用机器学习的电子系统。一些非常小的系统——是的,当然。对于某些系统,这可能不值得麻烦,但对于所有设计项目的很大一部分,机器学习和神经网络(和 TensorFlow)可以提供很大的增强。

之前,谷歌开放了其内部机器学习软件 TensorFlow,使支持其翻译服务和照片分析(以及许多其他功能) 的程序开源并免费下载。最近,该公司发布了该软件的分布式版本,允许它在多台机器上运行 ——一次最多数百台。

从神经开始

神经网络是一种用于构建从数据中学习的计算机程序的技术。它非常松散地基于我们认为人类大脑的工作方式。首先,一组软件“神经元”被创建并连接在一起,允许它们相互发送消息。接下来,网络被要求解决一个问题,它试图一遍又一遍地解决这个问题,每次都会加强导致成功的联系并减少导致失败的联系。

tensorflow

机器学习

机器学习软件只有通过分析大量数据才能变得聪明——例如,寻找照片中的面部特征等共同属性和趋势。如果你想让计算机学习一些东西,你会使用传统的编程,给它一套非常精确的规则。说你想让它煮意大利面。在厨房橱柜中找到合适的锅可能需要 50 或 100 条规则,而要找到炉子和正确的燃烧器等则需要更多规则。通过机器学习,您将向网络展示 10,000 个某人烹饪的视频意大利面——可能在同一个厨房里,也可能不在。

近年来,其他公司和研究人员在人工智能领域也取得了长足的进步,包括Facebook、 微软和Twitter。有些已经开源了类似于 TensorFlow 的软件。这包括Torch  (最初由瑞士研究人员构建的系统)以及 Caffe 和 Theano等系统。但是TensorFlow很重要。那是因为谷歌的人工智能引擎被一些人认为是世界上最先进的。

谷歌并没有泄露它所有的秘密。目前,该公司只是开源了这个人工智能引擎的一部分。它仅共享在引擎上运行的一些算法。它并没有共享对驱动这个引擎的非常先进的硬件基础设施的访问。但谷歌至少放弃了一些最重要的数据中心软件。

那么它到底是什么?

TensorFlow 是一个开源软件库,用于使用数据流图进行数值计算。图中的节点表示数学运算,而图边表示它们之间通信的多维数据数组(张量)。灵活的架构允许您使用单个 API 将计算部署到桌面、服务器或移动设备中的一个或多个 CPU 或 GPU。TensorFlow 最初是由谷歌机器智能研究组织内的谷歌大脑团队的研究人员和工程师开发的,目的是进行机器学习和深度神经网络研究,但该系统足够通用,可以适用于广泛的其他领域,例如出色地。请参阅www.tensorflow.org和Github以及此视频了解更多信息。

tensorflow

什么是数据流图?

数据流图用节点和边的有向图描述数学计算。节点通常实现数学运算,但也可以表示端点以输入数据、推出结果或读/写持久变量。边描述节点之间的输入/输出关系。这些数据边携带动态大小的多维数据数组或张量。通过图的张量流是 TensorFlow 得名的地方。一旦其传入边缘上的所有张量都可用,节点将被分配给计算设备并异步并行执行。

仍有很多限制

因此,基本上,您向神经网络提供大量数据,它们会学习执行任务。给他们喂食无数早餐、午餐和晚餐的照片,他们就能学会识别一顿饭。喂网络口语,他们可以学会识别你说的话。喂他们一些老电影对话,他们可以学会进行对话——不是完美的对话,而是相当不错的对话。GPU 擅长并行处理大量小数据,而这正是深度学习所需要的。

然而,虽然深度学习已被证明擅长涉及语音和图像识别的任务,但它也有很多局限性。大多数问题的答案都很好,但不是很好。优秀是非常非常难以达到的。深度学习技术的智能是狭隘而僵硬的。正如认知心理学家 Gary Marcus 在《纽约客》中所写,流行的方法“缺乏表示因果关系的方法(例如疾病及其症状之间的关系),并且在获取诸如‘兄弟姐妹’或‘相同’等抽象概念方面面临挑战。它们没有明显的逻辑推理方式,而且距离整合抽象知识还有很长的路要走,比如关于对象是什么、它们的用途以及它们通常如何使用的信息。” 换句话说,他们没有任何常识。

审核编辑 黄昊宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分