淘优惠

淘优惠

pytorch如何暂停训练 pytorch怎么提高训练的准确度

热门文章 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

pytorch如何暂停训练,pytorch训练中断,pytorch variable取消,python怎么暂停

点击上方“小白学视觉”,选择加"星标"或“置顶

文自 机器之心

作者:LORENZ KUHN 编辑:陈萍

掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练。

近日,Reddit 上一个帖子热度爆表。主题内容是关于怎样加速 PyTorch 训练。原文作者是来自苏黎世联邦理工学院的计算机科学硕士生 LORENZ KUHN,文章向我们介绍了在使用 PyTorch 训练深度模型时最省力、最有效的 17 种方法

该文所提方法,都是假设你在 GPU 环境下训练模型。具体内容如下。

17 种加速 PyTorch 训练的方法

1. 考虑换一种学习率 schedule

学习率 schedule 的选择对模型的收敛速度和泛化能力有很大的影响。Leslie N. Smith 等人在论文《Cyclical Learning Rates for Training Neural Networks》、《Super-Convergence: Very Fast Training of Neural Networks Using Large Learning Rates 》中提出了周期性(Cyclical)学习率以及 1Cycle 学习率 schedule。之后,fast.ai 的 Jeremy Howard 和 Sylvain Gugger 对其进行了推广。下图是 1Cycle 学习率 schedule 的图示:

Sylvain 写到:1Cycle 包括两个等长的步幅,一个步幅是从较低的学习率到较高的学习率,另一个是回到最低水平。最大值来自学习率查找器选取的值,较小的值可以低十倍。然后,这个周期的长度应该略小于总的 epochs 数,并且,在训练的最后阶段,我们应该允许学习率比最小值小几个数量级。

与传统的学习率 schedule 相比,在最好的情况下,该 schedule 实现了巨大的加速(Smith 称之为超级收敛)。例如,使用 1Cycle 策略在 ImageNet 数据集上训练 ResNet-56,训练迭代次数减少为原来的 1/10,但模型性能仍能比肩原论文中的水平。在常见的体系架构和优化器中,这种 schedule 似乎表现得很好。

Pytorch 已经实现了这两种方法:「torch.optim.lr_scheduler.CyclicLR」和「torch.optim.lr_scheduler.OneCycleLR」。

参考文档:https://pytorch.org/docs/stable/optim.html

2. 在 DataLoader 中使用多个 worker 和页锁定内存

当使用 torch.utils.data.DataLoader 时,设置 num_workers > 0,而不是默认值 0,同时设置 pin_memory=True,而不是默认值 False。

参考文档:https://pytorch.org/docs/stable/data.html

来自 NVIDIA 的高级 CUDA 深度学习算法软件工程师 Szymon Micacz 就曾使用四个 worker 和页锁定内存(pinned memory)在单个 epoch 中实现了 2 倍的加速。人们选择 worker 数量的经验法则是将其设置为可用 GPU 数量的四倍,大于或小于这个数都会降低训练速度。请注意,增加 num_workers 将增加 CPU 内存消耗。

3. 把 batch 调到最大

把 batch 调到最大是一个颇有争议的观点。一般来说,如果在 GPU 内存允许的范围内将 batch 调到最大,你的训练速度会更快。但是,你也必须调整其他超参数,比如学习率。一个比较好用的经验是,batch 大小加倍时,学习率也要加倍。

OpenAI 的论文《An Empirical Model of Large-Batch Training》很好地论证了不同的 batch 大小需要多少步才能收敛。在《How to get 4x speedup and better generalization using the right batch size》一文中,作者 Daniel Huynh 使用不同的 batch 大小进行了一些实验(也使用上面讨论的 1Cycle 策略)。最终,他将 batch 大小由 64 增加到 512,实现了 4 倍的加速。

然而,使用大 batch 的不足是,这可能导致解决方案的泛化能力比使用小 batch 的差。

4. 使用自动混合精度(AMP)

PyTorch 1.6 版本包括对 PyTorch 的自动混合精度训练的本地实现。这里想说的是,与单精度 (FP32) 相比,某些运算在半精度 (FP16) 下运行更快,而不会损失准确率。AMP 会自动决定应该以哪种精度执行哪种运算。这样既可以加快训练速度,又可以减少内存占用。

在最好的情况下,AMP 的使用情况如下:

5. 考虑使用另一种优化器

AdamW 是由 fast.ai 推广的一种具有权重衰减(而不是 L2 正则化)的 Adam,在 PyTorch 中以 torch.optim.AdamW 实现。AdamW 似乎在误差和训练时间上都一直优于 Adam。

Adam 和 AdamW 都能与上面提到的 1Cycle 策略很好地搭配。

目前,还有一些非本地优化器也引起了很大的关注,最突出的是 LARS 和 LAMB。NVIDA 的 APEX 实现了一些常见优化器的融合版本,比如 Adam。与 PyTorch 中的 Adam 实现相比,这种实现避免了与 GPU 内存之间的多次传递,速度提高了 5%。

6. cudNN 基准

如果你的模型架构保持不变、输入大小保持不变,设置 torch.backends.cudnn.benchmark = True。

7. 小心 CPU 和 GPU 之间频繁的数据传输

当频繁地使用 tensor.cpu() 将张量从 GPU 转到 CPU(或使用 tensor.cuda() 将张量从 CPU 转到 GPU)时,代价是非常昂贵的。item() 和 .numpy() 也是一样可以使用. detach() 代替。

如果你创建了一个新的张量,可以使用关键字参数 device=torch.device('cuda:0') 将其分配给 GPU。

如果你需要传输数据,可以使用. to(non_blocking=True),只要在传输之后没有同步点。

8. 使用梯度 / 激活 checkpointing

Checkpointing 的工作原理是用计算换内存,并不存储整个计算图的所有中间激活用于 backward pass,而是重新计算这些激活。我们可以将其应用于模型的任何部分。

具体来说,在 forward pass 中,function 会以 torch.no_grad() 方式运行,不存储中间激活。相反的是, forward pass 中会保存输入元组以及 function 参数。在 backward pass 中,输入和 function 会被检索,并再次在 function 上计算 forward pass。然后跟踪中间激活,使用这些激活值计算梯度。

因此,虽然这可能会略微增加给定 batch 大小的运行时间,但会显著减少内存占用。这反过来又将允许进一步增加所使用的 batch 大小,从而提高 GPU 的利用率。

尽管 checkpointing 以 torch.utils.checkpoint 方式实现,但仍需要一些思考和努力来正确地实现。Priya Goyal 写了一个很好的教程来介绍 checkpointing 关键方面。

Priya Goyal 教程地址:

https://github.com/prigoyal/pytorch_memonger/blob/master/tutorial/Checkpointing_for_PyTorch_models.ipynb

9. 使用梯度积累

增加 batch 大小的另一种方法是在调用 optimizer.step() 之前在多个. backward() 传递中累积梯度。

Hugging Face 的 Thomas Wolf 的文章《Training Neural Nets on Larger Batches: Practical Tips for 1-GPU, Multi-GPU & Distributed setups》介绍了如何使用梯度累积。梯度累积可以通过如下方式实现:

这个方法主要是为了规避 GPU 内存的限制而开发的。

10. 使用分布式数据并行进行多 GPU 训练

加速分布式训练可能有很多方法,但是简单的方法是使用 torch.nn.DistributedDataParallel 而不是 torch.nn.DataParallel。这样一来,每个 GPU 将由一个专用的 CPU 核心驱动,避免了 DataParallel 的 GIL 问题。

分布式训练文档地址:https://pytorch.org/tutorials/beginner/dist_overview.html

11. 设置梯度为 None 而不是 0

梯度设置为. zero_grad(set_to_none=True) 而不是 .zero_grad()。这样做可以让内存分配器处理梯度,而不是将它们设置为 0。正如文档中所说,将梯度设置为 None 会产生适度的加速,但不要期待奇迹出现。注意,这样做也有缺点,详细信息请查看文档。

文档地址:https://pytorch.org/docs/stable/optim.html

12. 使用. as_tensor() 而不是. tensor()

torch.tensor() 总是会复制数据。如果你要转换一个 numpy 数组,使用 torch.as_tensor() 或 torch.from_numpy() 来避免复制数据。

13. 必要时打开调试工具

PyTorch 提供了很多调试工具,例如 autograd.profiler、autograd.grad_check、autograd.anomaly_detection。请确保当你需要调试时再打开调试器,不需要时要及时关掉,因为调试器会降低你的训练速度。

14. 使用梯度裁剪

关于避免 RNN 中的梯度爆炸的问题,已经有一些实验和理论证实,梯度裁剪(gradient = min(gradient, threshold))可以加速收敛。HuggingFace 的 Transformer 实现就是一个非常清晰的例子,说明了如何使用梯度裁剪。本文中提到的其他一些方法,如 AMP 也可以用。

在 PyTorch 中可以使用 torch.nn.utils.clip_grad_norm_来实现。

15. 在 BatchNorm 之前关闭 bias

在开始 BatchNormalization 层之前关闭 bias 层。对于一个 2-D 卷积层,可以将 bias 关键字设置为 False:torch.nn.Conv2d(..., bias=False, ...)。

16. 在验证期间关闭梯度计算

在验证期间关闭梯度计算,设置:torch.no_grad() 。

17. 使用输入和 batch 归一化

要再三检查一下输入是否归一化?是否使用了 batch 归一化?

原文链接:https://efficientdl.com/faster-deep-learning-in-pytorch-a-guide/

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目31讲

在「小白学视觉」公众号后台回复:Python视觉实战项目31讲即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计


在python中如何安装jieba包 python安装wx离线包

在python中如何安装re,在python中如何安装prettytable,在python中如何安装opencv,python中如何安装pip

这里长期更新一些Python第三方包的安装教程,以及使用教程。。。

安装教程:

  • Windows:

首先,查看已安装的Python版本;访问下载对应的Pygame版本(cp37对应Python 3.7,win_amd64对应64位的Python,win32对应32位的Python),并修改文件名(如:pygame-1.9.6-cp37-cp37-win_amd64.whl-->pygame-1.9.6-cp37-none-win_amd64.whl);然后,在Windows下打开cmd窗口,进入文件下载的位置,输入pip安装指令(如:) 显示如下信息,即安装完成:

安装完成后,在Python交互式界面输入,不报错,即成功。

  • Ubuntu:

打开终端,输入命令:

使用教程: Pygame官网使用教程:

安装教程:

  • Windows:

访问,查找与当前Python版本匹配的wheel文件(扩展名为.whl的文件),再使用pip进行安装(如:) 显示如下信息,即安装完成:

安装完成后,在Python交互式界面输入,不报错,即成功。

  • Ubuntu:

打开终端,执行命令

使用教程: matplotlib官网API手册以及使用教程:

安装教程:

  • Windows:

根据电脑性能选择安装CPU还是GPU版,GPU版一定要对应好cuda的版本,打开cmd命令行 CPU版本: GPU版本: 使用pip安装时可能会出现下载速度缓慢甚至断开链接的情况,因此,在pip install命令后面带上“-i 源地址”表示使用国内源下载 安装完成后,打开python交互界面,输入,如果没有错误发生,继续输入,如安装成功会打印一系列信息,并最终返回;要查询当前Tensorflow版本,输入 详见TensorFlow网站

安装教程:

  • Windows:

访问PyTorach网站,gpu版就根据CUDA的版本选择;cpu版本在CUDA版本选项选择None 例如,CUDA版本为10.2,输入pip安装指令:

显示如下信息,表示正在安装:

安装完成:

进入Python交互界面进行验证,输入:

输出:

安装教程: 要求Python 3.5+,使用pip安装:

使用教程: Gym官方文档:

  1. python包安装

    python包安装: 一种是有网操作:pip install? 包名:例子[pip install setuptools] 无网络服务器上操作: 先把包下载:传上去再安装[] 1.一种是? ?*.wh ...

  2. vs中python包安装教程

    vs安装python很简单,只需要在vs安装包中选择python就可以了,这里使用的python3.7: 如果有了解,都知道安装python包的指令:"pip install xxx&quo ...

  3. python包安装和使用机制

    python语言的魅力之一就是大量的外置数据包,能够帮助使用者节省很多时间,提高效率.模块下载和引用是最常见的操作,现在解析内部的原理和背后发生的故事,做到心里有数. 导航: 基本定义 模块使用 模块 ...

  4. python包安装-centos7/windows

    1.修改pip源 临时使用:?可以在使用pip的时候在后面加上-i参数,指定pip源?eg: pip install scrapy -i?https://pypi.tuna.tsinghua.edu. ...

  5. Python包安装过程

    以下是paramiko-1.7.7.1的安装过程,可以看到整个过程分为步,第一步是build,就是拷贝源文件到build文件夹里, F:\VMFiles mpFiles\paramiko-1.7.7 ...

  6. 用pip命令把python包安装到指定目录

    sudo pip install transforms3d --target=/usr/local/lib/python2.7/site-packages pip install transforms ...

  7. python 包 安装 加速 pip anaconda

    使用 -i 参数指定源,豆瓣的很快: pip install web.py -i http://pypi.douban.com/simple anaconda: ~/.condarc channels ...

  8. [开发技巧]·如何让离线安装Python包

    [开发技巧]・如何让离线安装Python包 1.问题描述 PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI. ...

  9. 全面学习 Python 包:包的构建与分发

    首发于公众号:Python编程时光 1. 为什么需要对项目分发打包? 平常我们习惯了使用 pip 来安装一些第三方模块,这个安装过程之所以简单,是因为模块开发者为我们默默地为我们做了所有繁杂的工作,而 ...

  1. openstack (共享组件) 时间同步服务

    云计算openstack共享组件――时间同步服务ntp(2) ? 一.标准时间讲解 地球分为东西十二个区域,共计 24 个时区 格林威治作为全球标准时间即 (GMT 时间 ),东时区以格林威治时区进行 ...

  2. 格式化时间戳的n种方法

    1 var time=new Date(ele.time).toLocaleString().split(' ')[0] 2 formatDate: function (value) { let ...

  3. @JsonCreator自定义反序列化函数-JSON框架Jackson精解第5篇

    Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...

  4. Jenkins打Docker镜像推送到私有仓库

    Jenkins打Docker镜像推送到私有仓库 因为我的Jenkins是安装在群晖NAS中的docker,所以我这边就以Docker安装Jenkins为例 echo '================...

  5. Python-为元组中每个元素命名

    学生信息系统: (名字,年龄,性别,邮箱地址) 为了减少存储开支,每个学生的信息都以一个元组形式存放 如: ('tom', 18,'male','tom@qq.com' ) ('jom', 18,'m ...

  6. Python练习题 008:打印101-200之间的所有素数

    [Python练习题 008]判断101-200之间有多少个素数,并输出所有素数. ---------------------------------------------------------- ...

  7. Thymeleaf 异常:Exception processing template "index": An error happened during template parsing (template: "class path resource [templates/index.html]")

    Spring Boot 项目,在 Spring Tool Suite 4, Version: 4.4.0.RELEASE 运行没有问题,将项目中的静态资源和页面复制到 IDEA 的项目中,除了 IDE ...

  8. P 2568 GCD

    对于这道题,我们要求的是 \(\displaystyle \sum_{i=1}^{N}\sum_{j=1} ^{N}\) gcd(i,j)为质数 首先我们很容易想出来怎么打暴力,我们可以对于每个 ...

  9. Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(二)

    Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(二) 摘要 上一篇https://javaymw.com/post/59我们已经实现了基本的登录和t ...

  10. 洛谷 P3413 【萌数】

    敲完这篇题解,我就,我就,我就,嗯,好,就这样吧... 思路分析: 首先我们要知道一个回文串的性质--假如说一个[l-1,r+1]的串是回文的,那么[l,r]一定也是回文的. 所以我们只要记录前一个数 ...


Python机器学习教程

python 机器学习

 

本机器学习教程提供了机器学习的基本和中间概念。它是为完全入门的学生和专业工作人员而设计的。在本教程的最后,您不会成为机器学习方面的专家,但是您将能够制作能够执行复杂任务(例如,预测房屋价格或从尺寸识别虹膜的种类)的机器学习模型。花瓣和萼片的长度。如果您还不是一个完整的初学者,并且对机器学习有所了解,那么我建议您从子主题八开始,即机器学习类型。

在进入本教程之前,您应该熟悉Pandas和NumPy。这对于理解实现部分很重要。以下是我们将在本教程中讨论的子主题:

  •  什么是机器学习?
  •  它与传统编程有何不同?
  •  为什么我们需要机器学习?
  •  机器学习的历史
  •  目前的机器学习
  •  机器学习的特点
  •  机器学习的最佳语言是什么?
  •  机器学习的类型
  •  监督学习
  •  无监督学习
  •  强化学习
  •  机器学习算法
  •  机器学习步骤
  •  机器学习的优势
  •  未来的机器学习

什么是机器学习?

亚瑟·塞缪尔(Arthur Samuel)在1959年创造了“机器学习”一词。他是人工智能和计算机游戏的先驱,并将机器学习定义为“使计算机无需明确编程即可学习的能力的研究领域”。

简而言之,机器学习是人工智能(AI)的一种应用程序,它使程序(软件)可以从经验中学习并提高自己在完成一项任务时的自我,而无需进行明确的编程。例如,您将如何编写一个程序来根据水果的各种属性(例如颜色,形状,大小或任何其他属性)识别水果?

一种方法是对所有内容进行硬编码,制定一些规则并使用它们来识别结果。这似乎是唯一可行的方法,但永远无法制定适用于所有情况的完善规则。使用机器学习可以轻松解决此问题,而无需任何规则,这使其变得更加健壮和实用。您将在接下来的部分中看到我们将如何使用机器学习来完成此任务。

因此,我们可以说,机器学习是通过使机器具有最少的人工干预(即无需显式编程)进行学习的能力,从而使机器的行为和决策更具人性化。现在出现了一个问题,程序如何获得任何经验以及从中学习?答案是数据。数据也被称为机器学习的动力,我们可以肯定地说没有数据就没有机器学习。

您可能想知道,机器学习一词是在1959年引入的,它可以追溯到很久以前,那么为什么直到最近几年都没有提及它?您可能需要注意,机器学习需要巨大的计算能力,大量数据以及能够存储如此庞大数据的设备。我们直到最近才满足所有这些要求并可以练习机器学习。

它与传统编程有何不同?

您是否想知道机器学习与传统编程有何不同?好吧,在传统编程中,我们会将输入数据以及经过良好编写和测试的程序馈入机器中以生成输出。当涉及到机器学习时,在学习阶段,输入数据以及与数据相关联的输出将被馈送到机器中,并为自己制定程序。

如果您不能完全理解这些内容,请不要担心,在接下来的部分中,您将获得更好的理解。

为什么我们需要机器学习?

当今的机器学习具有它所需要的全部注意力。机器学习可以使许多任务实现自动化,尤其是只有人类才能利用其固有的智能来执行的任务。仅在机器学习的帮助下,才能将这种智能复制到机器上。 

在机器学习的帮助下,企业可以自动化日常任务。它还有助于自动化并快速创建数据分析模型。各个行业都依赖大量数据来优化其运营并做出明智的决策。机器学习有助于创建可以处理和分析大量复杂数据以提供准确结果的模型。这些模型精确,可扩展,并且具有更少的周转时间。通过构建这种精确的机器学习模型,企业可以利用有利可图的机会并避免未知的风险。

图像识别,文本生成和许多其他用例正在现实世界中找到应用。这扩大了机器学习专家成为受追捧的专业人员的视野。  

目前的机器学习

在2012年,Alex Krizhevsky,Geoffrey Hinton和Ilya Sutskever发表了有影响力的研究论文,描述了一种可以显着降低图像识别系统错误率的模型。同时,谷歌的X Lab开发了一种机器学习算法,该算法能够自主浏览YouTube视频,以识别包含猫的视频。2016年,AlphaGo(由Google DeepMind的研究人员创建,用于玩中国古代的围棋游戏)在与Lee Sedol的五场比赛中赢得了四场比赛的胜利,Le Sedol是十多年来一直是世界顶级围棋选手。

现在,在2020年,OpenAI发布了GPT-3,这是有史以来功能最强大的语言模型。它可以编写有创意的小说,生成功能代码,撰写周到的业务备忘录等。它的可能用例仅受我们的想象力限制。

机器学习的特点

自动化:如今,您的Gmail帐户中有一个垃圾邮件文件夹,其中包含所有垃圾邮件。您可能想知道Gmail如何知道所有这些电子邮件都是垃圾邮件?这是机器学习的工作。

它可以识别垃圾邮件,因此很容易实现此过程的自动化。自动执行重复任务的能力是机器学习的最大特征之一。大量组织已经在使用基于机器学习的文书工作和电子邮件自动化。

例如,在金融部门,需要执行大量重复,数据繁重和可预测的任务。因此,该行业在很大程度上使用了不同类型的机器学习解决方案。

改善客户体验:对于任何企业而言,提供定制体验和提供更好的服务,是提高参与度,提升品牌忠诚度和建立长期客户关系的最关键方法之一。

机器学习可以帮助我们实现两者。您是否曾经注意到,无论何时打开任何购物网站或在互联网上看到任何广告,它们大多与您最近搜索的内容有关?这是因为机器学习使我们能够做出精确的惊人推荐系统。它们帮助我们定制用户体验。现

在开始使用该服务,如今,大多数公司都拥有一个聊天机器人,可以全天候(24×7)使用。例如,亚航的Eva。这些机器人提供了智能的答案,有时您甚至可能没有注意到自己正在与机器人对话。

自动化数据可视化:过去,我们已经看到公司和个人正在生成大量数据。以Google,Twitter,Facebook等公司为例。他们每天产生多少数据?我们可以使用这些数据并可视化显着的关系,从而使企业能够制定更好的决策,从而使公司和客户都从中受益。

借助用户友好的自动化数据可视化平台(例如AutoViz),企业可以获取大量新见解,从而提高流程的生产率。

商业智能:机器学习特性与大数据分析结合使用时,可以帮助公司找到解决问题的方法,这些问题可以帮助企业发展并产生更多的利润。

从零售到金融服务再到医疗保健,等等,机器学习已经成为促进业务运营的最有效技术之一。

机器学习的最佳语言是什么?

尽管有许多可用于机器学习的语言,但据我称,Python是机器学习应用程序的最佳编程语言。这是由于以下部分提到的各种好处。可以用于机器学习应用程序的其他编程语言是R,C ++,JavaScript,Java,C#,Julia,Shell,TypeScript和Scala。R还是一种非常好的机器学习入门语言。

与其他编程语言相比,Python以其可读性和相对较低的复杂性而闻名。机器学习应用程序涉及复杂的概念,例如微积分和线性代数,这些实现需要花费很多精力和时间。Python通过快速实施来帮助机器学习工程师验证想法,从而减轻了负担。您可以查看《Python教程》以获得对该语言的基本了解。在机器学习中使用Python的另一个好处是预构建的库。如下所述,针对不同类型的应用程序有不同的软件包:

  •  在处理图像时使用Numpy,OpenCV和Scikit
  •  文本处理时,NLTK与Numpy和Scikit一起
  •  Librosa用于音频应用
  •  Matplotlib,Seaborn和Scikit用于数据表示
  •  用于深度学习应用程序的TensorFlow和Pytorch
  •  科学计算科学
  •  Django,用于集成Web应用程序
  •  熊猫用于高级数据结构和分析

Python提供了在面向对象的编程或脚本之间进行选择的灵活性。也不需要重新编译代码。开发人员可以实施任何更改并立即查看结果。您可以将Python和其他语言一起使用以实现所需的功能和结果。

Python是一种通用的编程语言,可以在任何平台上运行,包括Windows,MacOS,Linux,Unix等。从一个平台迁移到另一个平台时,代码需要进行一些小的改动和更改,并且可以在新平台上使用了。

以下是使用Python解决机器学习问题的好处的摘要:

机器学习的类型

机器学习大致分为三类

  •  监督学习
  •  无监督学习
  •  强化学习

什么是监督学习?

让我们从一个简单的例子开始,说您正在教一个孩子区分狗和猫。你会怎么做? 

您可以给他/她看狗,然后说“这是狗”,遇到猫时您会指出它是猫。当您向孩子展示足够多的猫狗时,他可能会学会区分它们。如果他训练有素,他也许就能认出他从未见过的不同品种的狗。 

同样,在监督学习中,我们有两组变量。一种称为目标变量,或称为标签(我们要预测的变量)和特征(可帮助我们预测目标变量的变量)。

我们向程序(模型)显示功能以及与这些功能关联的标签,然后程序便能够在数据中找到潜在的模式。以该数据集的示例为例,在该数据集中我们要根据房屋的大小来预测房屋的价格。作为目标变量的价格取决于作为特征的尺寸。

Number of rooms Price
1 $100
3 $300
5 $500

在真实的数据集中,我们将有更多的行和不止一个功能,例如大小