如果你需要深度学习模型,那么PyTorch和TensorFlow都是不错的选择。
作者
MartinHeller
译者
弯月,责编
屠敏
以下为译文:
并非每个回归或分类问题都需要通过深度学习来解决。甚至可以说,并非每个回归或分类问题都需要通过机器学习来解决。毕竟,许多数据集可以用解析方法或简单的统计过程进行建模。
另一方面,在某些情况下,深度学习或深度迁移学习可以帮助你训练更准确的模型。在这些情况下,你可以考虑使用PyTorch和TensorFlow,特别是如果你所需的训练模型与其中一个框架模型库中的模型类似。
PyTorch
PyTorch建立在旧版的Torch和Caffe2框架之上。如其名所示,PyTorch采用了脚本语言Python,并利用改版后的TorchC/CUDA作为后端。PyTorch项目还融入了Caffe2的生产功能。
PyTorch被称为“拥有强大GPU加速功能的Python版Tensor和动态神经网络。”这意味着什么?
Tensor(张量)是一种物理学和工程学中广泛使用的数学结构。2阶的Tensor是一种特殊的矩阵;而对向量和张量取内积就可以得到另一个拥有新长度和新方向的向量。TensorFlow这个名字就来自张量在其网络模型中流动的方式。NumPy也用到了Tensor,名为ndarray。
GPU加速是大多数现代深度神经网络框架的基础。动态神经网络是一种特殊的神经网络,每次迭代都会发生变化,例如,PyTorch模型可以在训练期间通过添加和删除隐藏层,来提高其准确性和通用性。
PyTorch会在每个迭代中实时重建计算图。相比之下,在默认情况下TensorFlow会创建一个计算图,优化图代码以提高性能,然后训练模型。
虽然急切执行模式在TensorFlow中刚刚出现,但其是PyTorch唯一的运行方式:API在被调用时会立即执行,而不会被添加到计算图稍后再运行。这样可能看起来计算效率会低一些,但是PyTorch设计的工作方式就是如此,而且实际上在训练或预测速度方面并不逊色。
PyTorch通过集成加速库,比如英特尔MKL、NvidiacuDNN和NCCL等,最大限度地提升速度。其核心CPU、GPUTensor和神经网络后端TH(Torch)、THC(TorchCUDA)、THNN(Torch神经网络)和THCUNN(TorchCUDA神经网络)等,都是使用C99API编写的单独库。同时,PyTorch并不是整体式C++框架的Python绑定。其目的是与Python深度集成,并允许使用其他Python库。
Fast.ai与fastai库
Fast.ai是一家小公司,他们通过为编程人员提供免费课程、软件库、尖端研究和社区,降低深度学习的难度,并吸引更多各种背景的人。
fastai库基于PyTorch,通过现代化的最佳实践简化了快速准确的神经网络训练。它基于对Fast.ai深度学习最佳实践的研究,提供了包括视觉、文本、表格和协作(协作过滤)模型在内的“开箱即用”支持。
fastai库与PyTorch的关系非常类似于Keras与TensorFlow。但明显的区别在于,PyTorch没有正式支持fastai。
TensorFlow
TensorFlow是众多优秀的机器学习和深度学习框架中最成熟的一个,也是研究论文中引用最多的一个(即使不算来自谷歌员工的引用也是第一),而且在生产中的使用效果也很好。它可能不是最容易学习的框架,但随着TensorFlow2的到来,TensorFlow的门槛也没有年那般高了。TensorFlow是许多Google服务的基础。
TensorFlow2.0