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

网友投稿 224 2022-11-09

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

【PyTorch】

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

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

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

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

【Keras】

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

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

【深度学习与迁移学习】

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

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

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

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

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

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

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

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:搭建gitlab CE(11.11.2) CI集群
下一篇:下载速度原来可以这么快,进度条就靠你拯救了!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~