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
    +关注

    关注

    59

    文章

    4892

    浏览量

    90425
  • 深度学习
    +关注

    关注

    73

    文章

    5614

    浏览量

    124759
  • pytorch
    +关注

    关注

    2

    文章

    813

    浏览量

    14954

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度学习为什么还是无法处理边缘场景?

    [首发于智驾最前沿微信公众号]虽然自动驾驶车辆已经完成了数百万公里的行驶测试,深度学习也已被普遍应用,但依然会在一些看似简单的场景中犯下低级错误。比如在遇到一些从未见到过的边缘场景时,系统可能会
    的头像 发表于 05-04 10:16 2271次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>为什么还是无法处理边缘场景?

    瑞芯微(EASY EAI)RV1126B 模型转换教程示例

    Pytorch模型都可以通过我们提供的toolkit工具将其转换至rknn模型,而对于其他框架训练出来的模型,也可以先将其转至onnx模型再转换为rknn模型。模型转换操作
    的头像 发表于 04-30 14:26 240次阅读
    瑞芯微(EASY EAI)RV1126B 模型转换教程示例

    PyTorch 中RuntimeError分析

    使用的具体框架(如 Stable Diffusion、ComfyUI)和 PyTorch 版本,我可以给你更精确的修复代码。需要我帮你定制吗?
    发表于 03-06 06:02

    Pytorch 与 Visionfive2 兼容吗?

    Pytorch 与 Visionfive2 兼容吗? $ pip3 install torch torchvision torchaudio --index-url https
    发表于 02-06 08:28

    如何在TensorFlow Lite Micro中添加自定义操作符(1)

    相信大家在部署嵌入式端的AI应用时,一定使用过TensorFlow Lite Micro,以下简称TFLm。TFLm 是专为微控制器和嵌入式设备设计的轻量级机器学习推理框架,它通过模块化的操作符系统
    的头像 发表于 12-26 10:34 5883次阅读

    穿孔机顶头检测仪 机器视觉深度学习

    ,能适用恶劣工况,在粉尘、高温、氧化皮等恶劣环境中均可正常工作。 测量原理 利用顶头与周围的物质(水、空气、导盘等)红外辐射能量的差异,热成像相机拍摄出清晰的图片,再通过深度学习短时间内深度
    发表于 12-22 14:33

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课(11大系列课程,共5000+分钟)

    行业市场具备深度学习能力的视觉系统占比已突破40%,催生大量复合型技术岗位需求: • 岗位缺口:视觉算法工程师全国缺口15万+,缺陷检测专项人才招聘响应率仅32% • 薪资水平:掌握LabVIEW+
    发表于 12-04 09:28

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课程(11大系列课程,共5000+分钟)

    行业市场具备深度学习能力的视觉系统占比已突破40%,催生大量复合型技术岗位需求: • 岗位缺口:视觉算法工程师全国缺口15万+,缺陷检测专项人才招聘响应率仅32% • 薪资水平:掌握LabVIEW+
    发表于 12-03 13:50

    从0到1,10+年资深LabVIEW专家,手把手教你攻克机器视觉+深度学习(5000分钟实战课)

    “告别检测系统能力缺陷!10+年LabVIEW视觉资深专家手把手教你:5000+分钟高清教程(含工具、算法原理、实战操作、项目优化全流程讲解)”——从传统视觉算法→深度学习建模→工业级部署"
    的头像 发表于 12-02 08:07 878次阅读
    从0到1,10+年资深LabVIEW专家,手把手教你攻克机器视觉+<b class='flag-5'>深度</b><b class='flag-5'>学习</b>(5000分钟实战课)

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于学习的外观质量标准判定 精密
    的头像 发表于 11-27 10:19 400次阅读

    如何在机器视觉中部署深度学习神经网络

    人士而言往往难以理解,人们也常常误以为需要扎实的编程技能才能真正掌握并合理使用这项技术。事实上,这种印象忽视了该技术为机器视觉(乃至生产自动化)带来的潜力,因为深度学习并非只属于计算机科学家或程序员。 从头开始:什么
    的头像 发表于 09-10 17:38 1132次阅读
    如何在机器视觉中部署<b class='flag-5'>深度</b><b class='flag-5'>学习</b>神经网络

    摩尔线程发布Torch-MUSA v2.1.1版本

    近日,摩尔线程发布其面向PyTorch深度学习框架的MUSA扩展库——Torch-MUSA v2.1.1。该版本在v2.1.0的基础上,进一步扩展了对大规模
    的头像 发表于 09-10 11:02 1326次阅读

    【Milk-V Duo S 开发板免费体验】开箱和系统体验

    TensorFlow(Lite)等主流深度学习框架都可以轻松移植到该平台。 首先要到官网下载固件,Milk-V Duo S 开发板支持ARM和RISC-V两类固件,因为主打是RV,所
    发表于 08-12 22:04

    任正非说 AI已经确定是第四次工业革命 那么如何从容地加入进来呢?

    TensorFlowPyTorch用于构建和训练神经网络。以Python为例,通过编写简单的程序来处理数据,如读取数据集、进行数据清洗和预处理,这是进入AI领域的基本技能。 学习机器学习
    发表于 07-08 17:44

    Nordic收购 Neuton.AI 关于产品技术的分析

    生成比传统框架(如 TensorFlowPyTorch 等)小 10 倍的模型,模型体积可低至个位数 KB,并且推理速度更快、功耗更低。此次收购将 Neuton 的自动化 TinyML 平台
    发表于 06-28 14:18