本篇文章2522字,读完约6分钟
周四,雷研究会邀请跨国it巨头thoughtworks的高级数据架构师白华川在网上公开课上做讲座,讲解张量在工程项目中的应用。
讲师白华川:让我自我介绍一下。我是思想工作的白华川。我以前从事过大数据,然后我们开始在人工智能的方向上做一些尝试和工作。我们致力于集成人工智能、机器学习和大数据。在研究了许多相关的机器学习框架后,我们还制作了自己的深度学习框架deep learning。斯卡拉。它是由scala编写的,目前是开源的,所以你可以了解它。
这是公开课的录像:
公开课的文本版不方便童鞋看视频。请阅读以下雷锋同志的公开课记录。
由于篇幅较长,这个公开课的成绩单分为两部分,这是下一部分。关于第一部分,请参考雷锋。(公开号码:雷锋。com)。张量流在工程项目中的应用。公开课视频+文本转录(一)|人工智能研究会。
白华川:我们上面提到了几种不同的大数据架构,它们都与前面提到的数据成熟度评估模型相关——我们将首先评估一个企业的数据达到了什么级别,然后才知道目前哪种解决方案最合适。
人工智能和大数据现在让我们来谈谈人工智能。
事实上,人工智能的概念最近并不新鲜。人们早在几十年前就已经在谈论人工智能了。人工智能的核心目标是我们希望机器像人类一样思考。机器怎么能像人类一样思考呢?
有两个分支:一个是早期概率模型,另一个是神经网络。
我们常见的隐马尔可夫模型和贝叶斯属于概率论。在概率论中,当处理数据时,你基本上有一个样本或以概率形式计算它。因此,在早期,当数据量不是特别大时,概率论将是一个特别好的选择。
此外,概率论可以处理小数据集,所以它将更常用。例如,我们用hmm做分词,这也是一个很好的场景。另一个分支是神经网络。神经网络提出得很早,但只是在最近几年,各种深度神经网络框架才逐渐流行起来。因为最近,我们发现计算机的计算能力有所提高——神经网络中的数据量越大,其效果越好;神经网络越深,效果越好。所有这些都取决于计算机的计算能力。神经网络有几种,如深层神经网络、递归神经网络、卷积等。如果计算机的计算能力不发展,我们所说的人工智能将继续留在实验室里。因此,如果没有数据支持,人工智能基本上不起作用。
如果我们想进入生产环境,就不能用10条数据进行训练。这样的数据在本质上不能满足生产需求。在很早的时候,数据一直在发展。事实上,人工智能也在发展,但其发展阶段不同。在很早的时候,人工智能可能只是停留在理论阶段。我们知道有算法和论文,但实际上把它应用于生产并使其商业化和市场化还有很长的路要走。之后,我们将进入一个新的阶段:许多企业将做人工智能实验室,打开一个实验室,根据现有的数据进行尝试,看看是否有更好的方法。
下一阶段是大数据时代。此时,数据处理性能变得特别高。我们发现,人工智能原本是依赖于数据的,而且由于数据处理能力的提高,人工智能必将迎来一个非常好的发展。这就是我们目前面临的形势。许多企业将使用大数据平台来处理数据。有了大数据,许多企业将使用人工智能来更好地为自己的业务服务。
这是一个很好的用于生产的人工智能架构方案。
如前一篇文章所述,数据和人工智能可以完全分开,但两者的结合是最终的解决方案。没有人工智能,我们可以将数据用作大数据平台。借助人工智能,我们可以在大数据平台上进行扩展,并将其转变为更完美的架构,这就是数据架构非常重要的原因——您的人工智能能否被很好地访问。从图中可以看出,数据平台主要负责数据处理、数据存储、数据检索和数据勘探等一系列数据准备相关工作。
当数据准备好时,对于机器学习,它只提取特征并根据你的数据训练模型,大部分工作将在数据平台上完成。简单来说,一些企业可能对数据隐私有更高的要求——会有数据加密和各种加密。在计算过程中会有数据解密。神经网络没有办法进行加密和解密,只能在数据平台上进行。因此,数据平台要求很高的数据处理能力,这直接决定了后续的效果。
当我们的数据平台建成时,本质上就是一个数据分布式环境。这就是我们想要做的,只是说有一个系统可以很好地添加到分布式数据中来训练模型。目前,张量流支持分布式模型,这是一个非常好的结果。
在早期,模型训练不支持分布式训练,也就是说,如果你的模型是在机器上训练的,它将是独立训练的。两台机器不可能训练一个模型。目前,张量流在支持模型的分布式训练方面做得非常好,这当然取决于它的计算图的概念。
对于一系列非常详细的技术问题,张量流计算图,下面的“张量流&神经网络算法高级应用类”课程将讲述张量流如何支持模型的分布式训练。在这个架构中,我们在底部有人工智能集群的gpu和cpu系统。除此之外,我们创建的模型的分布式训练将产生模型。数据平台还将提供另一个功能,即实时流。
如您所见,这种架构中有一个分支,即实时流。它结合人工智能进行实时预测。经过实时预测,数据被显示出来,并以决策的形式直接反馈给用户。事实上,实时流的另一个功能是模型的连续训练。在这个地方,您仍然可以看到一个箭头,即数据已经再次进入大数据平台。这是我们目前提倡的架构,称为数据驱动架构。只要用户生成数据,数据就为用户服务。如果你的过程是良性的:例如,如果我使用这个系统并且这个系统为我服务,这个过程是良性的并且越来越好;我使用的系统越多,我的体验就会越好,系统也会不断发展,变得越来越好,所以这个架构也是我们目前在所有实现中采用的方案。
张量流的工程实践
张量流本身是一个深层的神经网络框架。它的核心计算模块是用c++编写的。它向外界提供了许多api,包括早期的python和1.0之后添加的java api,但它仍处于测试阶段,不是特别稳定或完美。因此,对于张量流,我们更喜欢python。
对于python,我们将把机器学习打包成一种服务,或者以其他形式提供。在本节中,它从外部提供python,内部是c++,中间有一个数据交换,发生在内存中,也就是说,python所需的计算逻辑被转换成c++,结果由底层计算,然后返回。
在一个完整的人工智能系统中,分布存在于两个地方:数据分布和模型分布。数据分发主要由数据湖支持,我们的数据以分布式方式存储。分布式数据存储的优势在于,我可以从不同的节点快速获取数据。此时,对于系统来说,只需要扩展带宽。
在实际生产中,对于企业来说,建设一条专线来建设gb级网络带宽的成本将远远低于从本质上改进计算机硬件的成本。这是数据分布存在并且越来越好的原因之一。
此外,张量流支持分布式模型。当我们的数据是分布式的,我们的模型是分布式的,当两者结合时,整个训练速度会变得非常快。在张量流中,模型计算可以根据自己编写的训练模型代码生成计算图,然后根据计算图将每个独立的计算图分发到不同的节点,然后进行训练,最后生成一个唯一的模型,这也是张量流在分布式训练中的一个很好的点。
但是当我们回头看时,张量流实际上是一个正在使用的python库。所以当我们做一个神经网络工程项目时,我们可以说张量流是我们的一个库,我们使用它。相对而言,它在我们的系统中只占很小的模块。
Tensorflow是一个深度神经网络框架,但它不是唯一的,例如caffe、mxnet、an ano和java版本的deeplearning4j。这种框架已经存在。那么为什么我们认为张量流是更好的选择呢?
在开发过程中,人们将其定义为“工程上最好的深层神经网络框架”,因此他们倾向于选择张量流。其他框架用于许多场景,如实验室或大学;但是对于工程师来说,我们希望使用api的更友好的方式将使工程师更容易理解;降低门槛,降低对数学的要求。
神经网络框架越原始,对数学的要求就越高。这对工程师来说不是特别友好。张量流是两者的折衷。
Python,因为tensorflow是一个python库,所以当我们开发人工智能项目时,我们的开发本质上演变成如何在python项目中做好。
目前,无论是做机器学习还是数据分析,python都有很好的势头,每个人都在使用它。更多平台提供的实际上是作为api的python,python占了很大比例。因此,做人工智能项目和学习python是非常重要的。也就是说,要研究张量流,你必须打好基础,学好python。
对于python,有python2和python3,我们目前推荐Python 3。python中包含许多库。我们需要管理图书馆,就像百胜一样。我们可以用pip来管理我们的图书馆。下面有一个虚拟的。对于python这种轻量级语言,在我们的系统中,有时会存在不同版本的python项目,这需要一个良好的隔离环境,这样我们的两个环境就可以相互隔离。例如,我的一个项目是蟒2,另一个是蟒3。我希望这两个项目能同时在我的系统中运行。virtualenv提供了一个非常好的功能:它封装了python环境,因此您可以同时在一个系统中拥有不同的版本和不同的库。就virtualenv而言,它提供了一个python虚拟环境。在制作过程中,我们会发现当你有很多虚拟物品时,很难管理它。因此,我们将选择virtualenvwrapper,它的功能是管理系统中的所有virtualenv,包括您的创建和您的切换,它们可以被完全管理。
当我们有一个开发环境时——也就是上面提到的几个工具,它们将在开发过程中的任何时候被使用。有了这些工具,下一步就是开发代码。
对于python,有很多工具。Ipython笔记本是一个轻量级的python web ide,我们可以在网页上编写python代码。它分为不同的阶段,可以在本地执行代码,快速得到我们所看到的。这也是我们进行数据探索或一些尝试时的第一选择。我们可以快速分析我们的整个操作是否正确,是否需要继续。
所以这里解释了为什么我们使用Virtualenv——我们需要一个独立的环境来运行我们的项目。这个想法与目前的码头工人相似。另外,作为一个比较大的项目,我们可能会依赖集成开发环境的ide,比如目前开发中非常常用的pycharm风格的ide,基本上是100%使用的。在正式的环境中,尤其是在团队中,当人们协助开发时,它特别有用。
对于工程开发,在我们的一个项目开发完成后,我们需要上线,我们需要测试,我们需要部署;对于非人工智能项目,我们将有ci/cd。代码写完后,我们需要部署、测试和运行。我们可以自动化这个系列,这是ci/cd。
我们的代码指的是版本控制器,ci/cd会自动监听代码变化,然后打包代码并运行测试。成功后,它将被部署给你,结果将以可视化的形式显示出来。这是我们一般项目开发中常用的ci/cd工具,那么我们会在人工智能项目中使用ci/cd吗?
我真的会去做。
首先,人工智能的ci/cd与一般项目相似,但也有一些区别。前面是一样的。在代码逻辑改变之后,整个ci/cd管道将被触发,并且还有另一个分支:数据管道触发。
什么是数据管道?
上述人工智能数据分为两部分:一部分是数据部分,另一部分是人工智能部分。这意味着在我们的人工智能项目中,它有逻辑,在数据中它有数据。当我收到新数据或我的模型逻辑代码发生变化时,这两种情况都会触发您的ci/cd。
在ci/cd被触发后,除了像一般项目一样进行基本的单元测试评估,我们还有一个功能,那就是模型评估。如果使用该功能的这一部分,则在ci/cd上会有更多的修改。
什么是模型评估?对于一般的系统,在什么情况下,我们认为这个测试是失败的。也就是说,如果它的实际产出与我们的预期产出不一致,我们可以认为它已经死亡。
那么,对于人工智能,在什么情况下我们认为这次的开发是失败的呢?也就是说,模型正在恶化,而且正在一次又一次地恶化。例如,我第一次训练的模型准确率为90%,第二次为80%,第三次为70%。从这个角度来看,虽然代码运行正常,但效果正在下降,这种评估应该由ci/cd记录。在最终提交代码并训练模型之后,如果它的效果比前一个模型更差,那么你的ci/cd将被禁足,整个任务将不会通过。
通过这种方式,我们可以确保整个开发的性能不断提高,从而避免团队忙于开发不断改变方法的代码,并最终发现模型每次都更差。
本质上,张量流的应用场景是为了帮助人们更好地思考,帮助人们做出决策,所以场景将是相对广泛和通用的。但不同之处在于:在这种一般情况下,您希望实现什么样的需求?
图像识别,如人工智能、深度学习或卷积神经网络,是一个非常普遍的领域。然而,在这个领域,我们需要评估和实现细化的程度。例如,在我们之前做的项目中,我们使用了一个电子商务系统来分析它的图片——一个电子商务卖家可能会上传很多图片。对于整个电子商务平台,它希望对图片进行分析,并知道上传的图片中包含哪些对象。例如,我们可以将这张照片中的一个识别为沙发,另一个识别为人,等等。
仓库机器人是用张量流实现图像识别细分。此外,除了图像领域和人工智能的概念,当许多人提到人工智能时,他们会想到机器人。事实上,机器人广泛应用于工业,尤其是仓库。以亚马逊为首的仓库机器人在这个行业中处于领先地位。目前,它已经变得非常普遍,至少每个人都在这方面投资和研究。
仓储机器人的主要功能是搬运货物。正如你在上面的图片中看到的,一个储存机器人携带一个架子。在早期,仓库的运作是“人到了”,人们走到货物的前面去拿他们想要的东西,这是非常无效的。
有了新的人工智能匹配的仓库机器人,我们的目标是“把货物交付给人们”——我站着不动,我需要的货物将被机器人移动。这里有什么问题?
也就是说,当多个机器人在仓库内移动时,有必要确保安全——两个机器人不会相互碰撞。另外,他们需要找到最短的路径,这就是仓储机器人的路径规划:你应该怎么走?这也是人工智能的一个应用场景。这也是用张量流实现的。
在过去,智能阅卷系统用于给试卷评分,这通常是由人完成的,甚至是许多人。然而,在人工智能领域,我们发现人们凭经验做的事情实际上可以由计算机来完成。当我们使用张量流框架时,有一个叫做递归神经网络的函数,它主要用于处理时间序列的训练。在自然语言中,它也有特殊的优势,可以用来做到这一点。因此,这个项目的基本目的是使用机器评分,而不是人工评分。
智能招聘
智能招聘的目的是让求职者、求职者和招聘人员有一个非常好的匹配,这样最合适的人就可以去最需要他的地方。在这种情况下,我们需要对双方进行大量的数据分析,这些数据将来自社会或个人以外的其他地方,然后根据双方的所有数据进行匹配。
在线广告系统看起来有点像推荐系统,但是当我们做这个系统的时候,你会发现在线广告系统和推荐系统有本质的不同。
据说推荐系统的受益者是用户,而对于广告系统,其受益者是平台或广告商。此外,推荐系统应该找出满足个人用户的最佳推荐方案;但是在线广告系统的目标是利润最大化。
其次,它有一个规则。例如,如果我设计好这个广告,不管它是否合理,我都会放进去。然后有更多的规则来干涉,合作和学习,共同实现一个在线广告系统。这一块相对比推荐系统更复杂。
推荐系统
推荐系统在很多地方都有使用,甚至当涉及到服务用户时,它实际上涉及到推荐。例如,我们使用的许多应用程序会向你推送大量新闻,这些新闻基本上都是经过过滤的。在这个推荐领域。有许多现有的和广泛使用的方法。例如,基于人或事物的协同过滤已经被广泛使用。现在,我们更多的尝试是利用深层神经网络来提高推荐效果。有模型和算法,这实际上是张量流应用的一个场景。
在数据服务的底部,我想强调一点:当我们做任何人工智能系统时,重点不应该是建立模型,而是数据集和数据架构。这一块是最重要的。
智能问答事实上,我们可以把智能问答理解为一个普通的聊天机器人。在这种情况下,在实践中,很早,我们就可以直接通过关键词搜索,静态地返回给你,并使用搜索引擎给你反馈。本质上,这个时代不是一个智能问答,而是一个文献检索。后来,什么样的情况被称为智能问答?
智能问答不仅仅基于关键词,它能理解我这句话的意思。
这样,除了找出结果之外,它还有一个非常重要的功能,那就是理解你在说什么。这涉及到一项技术:自然语言处理。因此,在智能问答中,除了相关的复习,我们还需要做自然语言处理。
此外,对于客户,我们的输入可能包括除文本之外的语音和图像检索;因此,你的思维会变得更加特别。目前,该领域是人工智能发展的良好领域。事实上,我们制作的这个聊天机器人的模型基本上是由张量流构成的。
用张量流为企业建立一个智能问答系统,它有什么好处?
事实上,目前我们有许多与云相关的通用解决方案。但是对于行业来说,垂直智能问答不是一般智能问题可以解决的问题。例如,一个行业有很多行话,而这个行话并不经常被提及。因此,在这方面,对于企业来说,它将构建一个自己的垂直行业的智能问答系统,可以快速为自己提供服务,比如售后服务。当用户购买产品并需要在销售后出售时,机器人可以在这个时候派上用场,并且不需要投入大量的客户服务人员来100%地回答问题。
生产中的问题在开发人工智能项目的过程中,张量流就是你的框架。它实现相关的算法,并给你一个友好的应用编程接口,这样你就可以创建各种神经网络和进行各种训练。在这方面,它更熟悉编程语言或理解基础知识。例如,什么是损失函数,什么是梯度下降。这种详细的编程知识将在接下来的培训课中详细介绍。这里提到的问题在整个项目中更多——因为我们将张量流应用到这个项目中,并构建了一个人工智能项目,这肯定不是为了好玩,而是为了解决生产中的实际问题。
所以本章将讨论我之前提到的数据探索。在很早的时候,我们就发现构建的数据湖缺乏数据探索功能。数据湖中有几十亿字节的数据,但我甚至不能快速搜索和管理元数据。稍后,我们将做一个数据探索服务来解决这个问题,并做各种预览,为数据科学家提供很好的支持。
底部的文件处理是针对小文件的。首先,由我们的张量流处理的数据必须预先调节。也就是说,张量流不能直接访问生产环境,获取未处理的数据并自己处理。所有这些功能都发生在大数据架构中,因此大数据架构本质上为人工智能和张量流提供了良好的数据处理。
在这个过程中,我们会遇到小文件的问题。例如,我有数百亿个文件,一旦我们在数据湖中遇到数百亿个文件。这时,有许多文件和小文件。对于这种文件处理,我们通常有几种情况。
首先,如果它是一个静态文件,比如我的数据,那么就有成千上万的文件被成批导入,而这些文件可能不会一直被导入,那么最简单的方法就是压缩。压缩的方法有很多,但是对于不同的实践,例如,hadoop有自己的序列文件。
除了这种方法,还有第二种场景数据处理,它将在数据实时进入时应用。例如,我的数据不断出现,每次出现时,它都是一个小文件。不断传入,此时不适合使用静态压缩,因为数据一直在传入。你可以按十个1kb到一个10kb,但这没有任何意义。针对这种情况,我们以前在数据湖中设计了一个名为小文件系统的系统。它用于拦截所有数据请求。保存小文件后,在后台有一个独立的后台线程,专门做后台压缩。当你的文件数量或某个特征触发这个阈值时,它将触发一个线程来压缩小文件。
在这个小文件服务中,它想要记录的是压缩后的文件中包含哪些文件,以及在哪里索引。这样,当我们有一个访问小文件的请求时,这个请求首先被小文件服务截获,然后根据它所寻找的文件,我们去管理系统看看它在哪里,然后得到大文件,解压缩它,然后返回小文件,这样就可以解决小文件的问题。这种情况可以作为一个非常好的解决方案,文件不断进来,但文件的数量很少。
实际上,对于小文件还有另外一种方法,那就是我们可以把小文件放在卡夫卡里面,这对于处理小文件非常好。然而,卡夫卡有一个问题,它不能处理大文件,特别是当文件之间的差异太大,如一个或两个小文件的K和几个大文件的G,那么卡夫卡基本上不能抓住他们。
如前所述,我们处理少量文件。下面是我们遇到的许多文件的问题——多达100亿或更多。
那么瓶颈在哪里?
如果您的数据节点存储了大量文件记录,将会导致您的整个内存爆炸。因为每个文件进来,原始信息应该占据一定的内存空.虽然hadoop声称是基于廉价的小型计算机,但它强调命名节点配置必须高于其他节点,至少是高配置,以确保您的整个集群能够运行良好。在早期,namenode只提供ha的功能,您所有的原始信息都在namenode中。当你有太多的文件时,基本上会造成很大的问题。
此后,一个hadoop 2.0联盟诞生了。联合是将名称节点分配给不同的节点,每个节点都安装在不同的目录下,所以目录是水平分割的。我只负责一个目录。这种结构的优点是什么?这不是简单的分裂。
在我们的整个it开发过程中,我们后来产生了一个微服务。事实上,这个想法本质上是为了做什么,也就是独立地分离你的业务。我们的一个大系统有什么问题?当你的系统崩溃时,你所有的需求都出了问题,你不能访问它们。但是,当我们将业务分成不同的子系统时,在我的一个系统发生故障后,我的其余系统可以继续使用。
在hadoop联盟发布后,我们会发现在一个文件夹出错后,我的其余数据仍然可以使用。在这种情况下,我们在设计数据时会做什么?不同的目录,我们可能面临不同的业务场景,或者不同的部门。在这种情况下,在向企业提供大数据平台之后,我们有一个非常好的容错能力,即当某个企业部门的数据出现问题时,不会影响到其他地方。良好的安全隔离直接在这层楼完成。对于一个企业来说,它不太可能制造几套大数据平台。一般来说,会有一套大数据平台,为整个企业提供统一的服务,并在其上构建人工智能系统。在这种情况下,对底层数据设施的要求非常高。这种hadoop不仅处理大量文件,而且提供了这种安全隔离,很好地解决了这个问题。
集群构建模式我们在这里看到的是集群构建模式。
当应用张量流和大数据进行集成时,我们会有几种不同的处理方法,例如,数据平台和人工智能集群是独立的。众所周知,张量流的优点是使用gpu。当然,这不是张量流的问题,但是对于任何数值计算框架来说,gpu都是最有效的。因为gpu非常擅长艰苦工作和纯数值计算;虽然中央处理器更擅长逻辑计算,那么每个人都会倾向于使用图形处理器做数值计算,而深层神经网络本质上是不同的矩阵和各种纯粹的数学运算。因此,在企业中,我们将建立一个统一的gpu集群,专门用来训练模型。
因此,我们面临一个问题:当我们在制作一个企业级的人工智能系统时,我们的数据平台应该如何与人工智能系统集成?
我们可以完全独立,一个数据平台和一个人工智能系统。我们也可以一起部署人工智能系统和数据系统。它是部署在同一台服务器上的cpu,以及与数据服务相关的东西。当我们计算时,我们的模型在gpu上训练,数据在其他地方处理,这些数据被集成到一个集合中。所以有两种部署方法,一种是独立的,另一种是集成的,哪个更好?它一定是最好的之一。为什么?
因为就独立性而言,如果我们是独立的,这意味着尽管数据是分布式的并且可以很快获得,但你不可避免地会有一个反向动作。你需要把数据从不同的节点拉到一个节点,然后把数据取出来,交给人工智能系统,在gpu中进行训练。现在看来,如果我们有很高的带宽和计算性能,这不是问题,但是在使用的过程中,我们会发现一个更好的方法就是把它集成起来。
这样做的好处是,首先,我们前面提到张量流支持分布式模型。我可以在不同的节点上训练。当数据在大数据平台上时,它具有分布式数据,并且tensorflow支持直接从分布式文件系统(如hdfs)加载数据。在这种情况下,什么是更好的安排?
我们的模型采用分布式训练方式,在当前节点上训练时直接加载当前节点的数据,直接节省了整个网络带宽,直接在当前节点上训练。这是我们的理想情况,因此这也是将所有集群部署在一起的最佳体验方式。
当然,这可能会在实施过程中根据不同生产的客观环境进行部分调整,所以这类问题只能在现场进行解释。但是对于集群构建,我们将有这两种方法。
我前面提到过,张量流有一个分布式模型。事实上,张量流也可以在火花上运行,也就是火花上的张量流。对此,事实上,我前面提到的思路是:我只是移动计算,而不是数据。因为我想训练模型,所以我可以将我训练的模型移动到数据上。因此,整个张量流可以在火花簇中运行。
如果我们以前在生产中运行,这个效果不是很好。首先,你在spark中运行张量流,它是独立的。因为火花本身是分布的,如果张量流再次分布,当这两种分布重叠时就会出现问题。因此,在这种情况下,张量流实际上在火花执行器上独立运行。这样,它会产生多个模型,最后它会找出最佳模型,然后再次使用它。只有在这个过程中,才有一个分布式的交叉验证,这使得所有的测试、训练和验证过程更加通用,提高了我们在整个模型训练过程中的速度。
调试当我们开发张量流或其他人工智能架构时,我们都面临一个问题:调试。事实上,不仅在人工智能中,而且在我们做一般开发和多线程时,调试都是非常困难的。现在我们做人工智能,张量流,它能以分布式方式训练和以分布式方式读取数据,所以以分布式方式调试它们变得更加困难。
就张量流而言,我们一开始可能只有一个张量板。我们导出计算图表,并通过张量板观察整个模型的计算图表如何变化以及变量如何变化。如果这种变化有任何问题,我们可以从这方面监控我们的培训过程。
此外,tfdbg是在1.0之后提出的。事实上,这种调试方法可以支持我们以断点的形式进行处理。然而,正如我们前面提到的,张量流支持模型分布式训练,所以分布式多线程训练在这次调试中将变得特别困难。因此,一旦我们使用dbg,它将实际上废除您的分布式训练,并将您的分布式训练直接拉入当前的同步训练中。否则,您将在多线程下被并行训练,以这种方式调试将特别困难。这两种方法是张量流的一些调试方法。这是非常罕见的,虽然这一块看起来有这个功能,但实际上这是我们在开发过程中遇到的一个非常困难的问题,基本上调试的时候会有很多问题,不是很顺利。
测试是最后的测试。无论是人工智能还是大数据,测试这一块实际上是一个特别头痛的问题。首先,我们的大数据和人工智能测试不同于传统测试。
就传统测试而言,我们的输出是固定的,我们只需要定义交流或写单元测试来确保这个结果的输出是正确的。但是就大数据而言,我们不能写一个测试来说明如何编写这个模型。此外,对于大数据,我们无法提前定义ac。例如,如果我们通过大数据和人工智能来训练1tb的数据或1tb的数据,并最终计算出一个值,我们如何证明计算出的值是正确的?就我们所能得到的一个简单场景而言,我们已经在累积tp数据后计算了一个值,那么我们如何证明我们的值是正确的呢?
我们不可能一个接一个地手工计算,所以这也是人工智能系统和大数据面临的问题,也就是我们如何测试我们的人工智能系统。对于这一块,我们有不同的尝试,但目前还没有最终的方法,也就是说,我们可以证明它,并且这个运行测试是正确的。
最后一个是接受。当做这种项目时,我们将面对验收现场。我们已经训练了模型,如何定义它?例如,如果我们训练一个模型,并说有90%的成功率,我们如何证明这90%的成功率,我们如何说服其他人这是90%?因此,上述测试和验收实际上是我们在整个开发过程中面临的一些问题。应该说,目前还没有特别好的解决方案可以很好地证明这一点。
今天就到这里。谢谢你的收看。现在,如果你有任何问题,你可以问相关的问题。今天的课程到了。谢谢你。如果你在后面的课程,我们还有一系列相关的课程。欢迎你观看。谢谢你!
“张量流&神经网络算法高级应用类”即将开始!
下周,将在mooc.ai上推出由两位老师,思维工厂童达和白华川主持的tensorflow培训,以系统地宣讲和消除疑虑。
你一直想要一个老司机带头吗?这是一个好机会。
think works是think works的讲师,是全球领先的it咨询公司,是联合国妇女儿童组织和世界卫生组织的合作伙伴。总部设在芝加哥,在全球15个国家设有42个办事处。
2012年,think works排名在谷歌和facebook之前,被评为世界上最难面试的公司。
2016年,思维工场荣获“女性科技人员最佳雇主”奖。
培训课程介绍:从初级到高级,理论+实战,一站式深入了解张量流!
本课程旨在深入学习开发人员,并教授如何使用张量流解决特定问题,如图像识别和文本分析。为期10周的课程将从张量流的原理和基本实践技能开始,逐步教会学生如何在张量流上构建cnn、自编码、rnn、gan等模型,最终掌握一套基于张量流的深度学习和发展的专业技能。
作为思想工作的高级技术专家,童达和白华川两位教师在构建大数据平台和开发深度学习系统方面有着丰富的经验。
开始时间:4月25日(星期二),每周二和周四晚上20: 00到21: 00
课程时长:共20小时,10周完成,每周两次,每节课1小时。
地址:mooc.ai/course/82
在线教学,开放预订!
相关文章:
张量流在工程项目中的应用公开课视频+文本转录(一)|人工智能研究会
万事开头难!为了开始张量流,tf男孩必须理解这9个问题
天马行空和阿帕奇火花:雅虎开源软件“天马行空公园”
雷锋原创文章。严禁擅自转载。详情请参考转载说明。
来源:搜狐微门户
标题:TensorFlow在工程项目中的应用 公开课视频+文字转录(下)
地址:http://www.shwmhw.com/shxw/60249.html