0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用PyTorch、TensorFlow框架掌握深度学习

新机器视觉 来源:CSDN 作者:Martin Heller 2022-07-05 15:31 次阅读

如果你需要深度学习模型,那么 PyTorch 和 TensorFlow 都是不错的选择。

并非每个回归或分类问题都需要通过深度学习来解决。甚至可以说,并非每个回归或分类问题都需要通过机器学习来解决。毕竟,许多数据集可以用解析方法或简单的统计过程进行建模。

另一方面,在某些情况下,深度学习或深度迁移学习可以帮助你训练更准确的模型。在这些情况下,你可以考虑使用 PyTorch 和 TensorFlow ,特别是如果你所需的训练模型与其中一个框架模型库中的模型类似。

【PyTorch】

PyTorch 建立在旧版的 Torch 和 Caffe2 框架之上。如其名所示,PyTorch采用了脚本语言 Python,并利用改版后的Torch C/CUDA作为后端。PyTorch 项目还融入了 Caffe2 的生产功能。

PyTorch 被称为“拥有强大 GPU 加速功能的 Python 版 Tensor 和动态神经网络。”这意味着什么?

Tensor(张量)是一种物理学和工程学中广泛使用的数学结构。2 阶的 Tensor 是一种特殊的矩阵;而对向量和张量取内积就可以得到另一个拥有新长度和新方向的向量。TensorFlow 这个名字就来自张量在其网络模型中流动的方式。NumPy 也用到了 Tensor,名为 ndarray 。

GPU 加速是大多数现代深度神经网络框架的基础。动态神经网络是一种特殊的神经网络,每次迭代都会发生变化,例如,PyTorch 模型可以在训练期间通过添加和删除隐藏层,来提高其准确性和通用性。

PyTorch 会在每个迭代中实时重建计算图。相比之下,在默认情况下TensorFlow 会创建一个计算图,优化图代码以提高性能,然后训练模型。

虽然急切执行模式在 TensorFlow 中刚刚出现,但其是 PyTorch 唯一的运行方式:API 在被调用时会立即执行,而不会被添加到计算图稍后再运行。这样可能看起来计算效率会低一些,但是 PyTorch 设计的工作方式就是如此,而且实际上在训练或预测速度方面并不逊色。

PyTorch 通过集成加速库,比如英特尔 MKL、Nvidia cuDNN 和 NCCL 等,最大限度地提升速度。其核心CPU、GPU Tensor和神经网络后端TH(Torch)、THC(Torch CUDA)、THNN(Torch神经网络)和THCUNN(Torch CUDA神经网络)等,都是使用 C99 API 编写的单独库。同时,PyTorch 并不是整体式 C++ 框架的 Python 绑定。其目的是与Python 深度集成,并允许使用其他 Python 库。

【Fast.ai与fastai库】

Fast.ai 是一家小公司,他们通过为编程人员提供免费课程、软件库、尖端研究和社区,降低深度学习的难度,并吸引更多各种背景的人。

fastai 库基于 PyTorch,通过现代化的最佳实践简化了快速准确的神经网络训练。它基于对 Fast.ai 深度学习最佳实践的研究,提供了包括视觉、文本、表格和协作(协作过滤)模型在内的“开箱即用”支持。

fastai 库与 PyTorch 的关系非常类似于 Keras 与 TensorFlow 。但明显的区别在于,PyTorch 没有正式支持 fastai 。

【TensorFlow】

TensorFlow 是众多优秀的机器学习和深度学习框架中最成熟的一个,也是研究论文中引用最多的一个(即使不算来自谷歌员工的引用也是第一),而且在生产中的使用效果也很好。它可能不是最容易学习的框架,但随着 TensorFlow 2的到来,TensorFlow 的门槛也没有 2016 年那般高了。TensorFlow 是许多 Google 服务的基础。

TensorFlow 2.0 官网对该项目的描述为:“端到端的开源机器学习平台。”,谷歌通过“平台”提供了一个包含工具、库以及社区资源的全方位生态系统,研究人员可以利用这个平台“推动机器学习达到最高水准”,而开发人员则可以利用这个平台轻松构建和部署基于 AI 的应用程序。

TensorFlow 2.0 有四个主要部分组成:

TensorFlow 核心,一个用于开发和培训机器学习模型的开源库;

TensorFlow.js,一个在 Web 浏览器和 Node.js 上训练和部署模型的 JavaScript库;

TensorFlow Lite,一个轻量级库,用于在移动和嵌入式设备上部署模型;

TensorFlow Extended,是一个端到端平台,用于在大型生产环境中准备数据、培训、验证和部署模型。

TensorFlow 2.0 的重点放在了简单性和易用性上,其这个版本拥有一系列的新功能,包括急切执行、直观的高级 API 以及可以在任何平台上构建模型等。急切执行意味着 TensorFlow 代码定义好就可以运行,而 TensorFlow 最初的模式需要将节点和边添加到计算图中,稍后再在会话中运行。

高效地使用 TensorFlow 2.0 方法是,使用高级的 tf.keras API(而不是旧的低级 AP,这样可以大大减少需要编写的代码量。只需要使用一行代码就可以构建 Keras 神经网络中的一层,如果利用循环结构,则可以进一步减少代码量。

TensorFlow.js 是一个利用 JavaScript 开发和训练机器学习模型,并在浏览器或 Node.js 中部署模型的库。在 TensorFlow.js、ml5.js 之上还有一个高级库,它隐藏了张量和优化器的复杂性。

TensorFlow.js 可以通过浏览器支持移动设备和桌面设备。如果你的浏览器支持 WebGL 着色器 API,TensorFlow.js 可以利用它们发挥 GPU 的优势。与CPU 后端相比,这可以为你提供高达 100 倍的加速。在拥有 GPU 的计算机上,TensorFlow.js 可以非常快速地在浏览器中运行。

TensorFlow Lite 是一个用于移动设备的开源深度学习框架。目前它可以为iOSARM64 和 Raspberry Pi 构建模型。TensorFlow Lite 有两个主要组件:解释器和转换器。解释器可以在许多不同的硬件类型上运行经过特别优化的模型。转换器可以将 TensorFlow 模型转换为高效的形式供解释器使用,还可引入优化以缩小可执行文件大小并提高性能。

TensorFlow Extended(TFX)是用于部署生产机器学习管道的端到端平台。在你训练好一个模型后,就需要考虑这方面的工作了。管道包括数据验证、功能工程、建模、模型评估、服务推断以及管理在线、原生移动和 JavaScript 目标的部署。

【Keras】

Keras 是用于构建神经网络模型的高级前端规范和实现。Keras 支持三种后端深度学习框架:TensorFlow、CNTK 和 Theano。目前亚马逊正在全力为Keras 开发 MXNet 后端。你也可以使用 PlaidML(一个独立的项目)作为Keras 的后端,利用 PlaidML 的 OpenCL 支持所有 GPU 的优势。

TensorFlow是Keras的默认后端,在很多情况下我们也推荐使用TensorFlow,包括通过 CUDA 和 cuDNN 在 Nvidia 硬件上实现 GPU 加速,以及利用 Google Cloud 中的 Tensor 处理单元加速等。Keras 除了可以单独安装之外,TensorFlow 还包含一个内部 tf.keras 类。如上所述,这是TensorFlow 的首选高级前端。

Keras 提供了一个高级环境,在其 Sequential 模型中向神经网络添加一层的代码量可以缩减到一行,编译和训练模型也分别只需一个函数调用。如果有需要,Keras 也允许你通过其 Model 或函数式 API 接触较低层上的代码。

你还可以利用 Keras 的子类 keras.Model 进一步深入,一直到 Python 代码级别,直到找到你喜欢的功能 API 。另外,它还有 Scikit-learn API,因此你可以利用 Scikit-learn 网格搜索在 Keras 模型中执行超参数优化。

【深度学习与迁移学习】

PyTorch 和 TensorFlow 都支持深度学习和迁移学习。迁移学习(有时称为自定义机器学习)可以从预先训练好的神经网络模型开始,只需为你的数据定制最终层即可。

从头开始训练深度神经网络非常耗时,并且需要大量标记数据。迁移学习花费的时间更少,而且需要的新标记样本更少,但只有在模型已预先训练好的情况下,你才可以使用迁移学习。幸运的是,所有主流的深度学习框架都提供了某种形式的模型库供你挑选模型。

图像分类中使用的卷积神经网络(也称为 ConvNets 或 CNN )是迁移学习的代表。PyTorch 和 TensorFlow 都提供了有关如何使用迁移学习来训练卷积神经网络的教程。TensorFlow 的迁移学习教程演示了如何使用迁移学习提取和微调特征。PyTorch 的迁移学习教程也演示了相同的两种方法。

以下是这些笔记中提到的一个关键点:

实际上,很少有人从头开始训练整个卷积网络(利用随机的初始化),因为你很难拥有足够大的数据集。相反,一般人们会在非常大的数据集(例如ImageNet,其中包含 1,000 个类别的 120 万个图像)上预先训练ConvNet,然后以 ConvNet 为起点或通过 ConvNet 提取感兴趣的特征。

【如何选择深度学习框架】

在 PC 和 Mac 出现的早期,人们经常会问我应该买哪个。其实,这个问题没有正确的答案,因为这个问题本身就是一个错误,或者我应该说“那要看你想用这台电脑干什么”,但一般在我问他们几个问题后,他们就能找到自己的答案,比如“你想用这台电脑干什么?”,或者“你有什么不可或缺的应用吗?”

同样,“我应该使用哪种深度学习框架?”也算不上一个真正的问题。这个问题同样取决于你自己,比如首先想一想“你想用你的模型干什么?”,然后再深入研究你可以用于训练的数据类型。

如果你不熟悉深度学习,那么我建议你先阅读 TensorFlow 2 中的 Keras 教程,以及 PyTorch 中的 fastai 教程。即使不深入了解 TensorFlow 和PyTorch 的低级 API ,你也有很多东西需要学习,而且你应该对这两种方法都有所了解。然后,你可能会意识到这两个框架的确有多相似之处,而且它们赖以生存的概念和技术都是相同的。

在很多情况下,选用哪种框架无关紧要:你会发现每个框架可用的模型基本相同。在某些特定的情况下,可能某个框架优于另一个——至少在当前版本是如此。你可能还会发现,学习其中某一个更为容易,原因可能是框架中的某些基本功能,也有可能是教程的质量。

审核编辑:郭婷


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

    关注

    55

    文章

    4781

    浏览量

    84440
  • 深度学习
    +关注

    关注

    73

    文章

    5492

    浏览量

    120958
  • pytorch
    +关注

    关注

    2

    文章

    803

    浏览量

    13143

原文标题:掌握深度学习,为什么要用PyTorch、TensorFlow框架?

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Pytorch深度学习训练的方法

    掌握这 17 种方法,最省力的方式,加速你的 Pytorch 深度学习训练。
    的头像 发表于 10-28 14:05 140次阅读
    <b class='flag-5'>Pytorch</b><b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练的方法

    pytorch环境搭建详细步骤

    PyTorch作为一个广泛使用的深度学习框架,其环境搭建对于从事机器学习深度
    的头像 发表于 08-01 15:38 684次阅读

    pytorch和python的关系是什么

    PyTorch已经成为了一个非常受欢迎的框架。本文将介绍PyTorch和Python之间的关系,以及它们在深度学习领域的应用。 Pytho
    的头像 发表于 08-01 15:27 1660次阅读

    NVIDIA推出全新深度学习框架fVDB

    在 SIGGRAPH 上推出的全新深度学习框架可用于打造自动驾驶汽车、气候科学和智慧城市的 AI 就绪型虚拟表示。
    的头像 发表于 08-01 14:31 518次阅读

    PyTorch深度学习开发环境搭建指南

    PyTorch作为一种流行的深度学习框架,其开发环境的搭建对于深度学习研究者和开发者来说至关重要
    的头像 发表于 07-16 18:29 811次阅读

    TensorFlow是什么?TensorFlow怎么

    TensorFlow是由Google开发的一个开源深度学习框架,它允许开发者方便地构建、训练和部署各种复杂的机器学习模型。
    的头像 发表于 07-12 16:38 568次阅读

    基于PyTorch的卷积核实例应用

    深度学习和计算机视觉领域,卷积操作是一种至关重要的技术,尤其在图像处理和特征提取方面发挥着核心作用。PyTorch作为当前最流行的深度学习
    的头像 发表于 07-11 15:19 389次阅读

    pytorch中有神经网络模型吗

    当然,PyTorch是一个广泛使用的深度学习框架,它提供了许多预训练的神经网络模型。 PyTorch中的神经网络模型 1. 引言
    的头像 发表于 07-11 09:59 634次阅读

    PyTorch的介绍与使用案例

    PyTorch是一个基于Python的开源机器学习库,它主要面向深度学习和科学计算领域。PyTorch由Meta Platforms(原Fa
    的头像 发表于 07-10 14:19 350次阅读

    tensorflowpytorch哪个更简单?

    TensorFlowPyTorch都是用于深度学习和机器学习的开源框架
    的头像 发表于 07-05 09:45 772次阅读

    tensorflowpytorch哪个好

    tensorflowpytorch都是非常不错的强大的框架TensorFlow还是PyTorch哪个更好取决于您的具体需求,以下是关于这
    的头像 发表于 07-05 09:42 625次阅读

    keras模型转tensorflow session

    和训练深度学习模型。Keras是基于TensorFlow、Theano或CNTK等底层计算框架构建的。TensorFlow是一个开源的机器
    的头像 发表于 07-05 09:36 455次阅读

    PyTorch如何训练自己的数据集

    PyTorch是一个广泛使用的深度学习框架,它以其灵活性、易用性和强大的动态图特性而闻名。在训练深度学习
    的头像 发表于 07-02 14:09 1308次阅读

    TensorFlowPyTorch深度学习框架的比较与选择

    深度学习作为人工智能领域的一个重要分支,在过去十年中取得了显著的进展。在构建和训练深度学习模型的过程中,深度
    的头像 发表于 07-02 14:04 883次阅读

    谷歌模型框架是什么软件?谷歌模型框架怎么

    谷歌模型框架通常指的是谷歌开发的用于机器学习和人工智能的软件框架,其中最著名的是TensorFlowTensorFlow是一个开源的机器
    的头像 发表于 03-01 16:25 791次阅读