一个令人震惊的事实是,人工智能和机器学习的工具和技术在不久的将来迅速崛起。深度学习,或“类固醇机器学习”,是数据科学家和机器学习专家拥有无数可用库和框架的领域。许多这些框架都是基于Python的,因为Python是一种更通用、相对简单的语言。Theano、Keras、TensorFlow是为数不多的建立在Python之上的流行深度学习库,它们使机器学习专家的工作变得更轻松。Google的TensorFlow是一种广泛使用的机器学习和深度学习框架。TensorFlow于2015年开源,得到了机器学习专家社区的广泛支持。TensorFlow已迅速成长为许多机构根据其机器学习和深度学习需求选择的框架。另一方面,PyTorch是Facebook最近开发的用于训练神经网络的Python包,改编自基于Lua的深度学习库Torch。PyTorch是为数不多的可用深度学习框架之一,它使用基于磁带的autograd系统以快速灵活的方式构建动态神经网络。在这篇文章中,我们从不同方面比较了PyTorch和TensorFlow。开始吧!哪些编程语言支持PyTorch和TensorFlow?尽管主要是用C++和CUDA编写的,但TensorFlow在核心引擎之上包含一个PythonAPI,使Python支持者Pythonistas更容易使用。除了Python之外,它还包括其他API,例如C++、Haskell、Java、Go和Rust,这意味着开发人员可以使用他们喜欢的语言进行编码。尽管PyTorch是一个Python包,但您也可以提供一个API,用于使用基本的C/C++语言进行编码。如果您熟悉Lua编程语言,您还可以使用TorchAPI在PyTorch中编写神经网络模型。PyTorch和TensorFlow的易用性如何?如果将TensorFlow作为一个独立的框架使用,它可能会有点复杂,并且会给深度学习模型的训练带来一些困难。为了降低这种复杂性,可以使用TensorFlow复杂引擎之上的Keras包装器来简化深度学习模型的开发和培训。TensorFlow还支持PyTorch目前没有的分布式训练。得益于包含的PythonAPI,TensorFlow也可用于生产,即用于训练和部署企业级深度学习模型。由于Torch的复杂性,PyTorch用Python重写。这使得PyTorch对于开发人员来说更加原生。它有一个易于使用的框架,可提供最大的灵活性和速度。它还允许在训练期间快速更改代码而不影响其性能。如果你已经有一些深度学习经验并且之前使用过Torch,你会更喜欢PyTorch,因为它的速度、效率和易用性。PyTorch包含一个自定义GPU分配器,它使深度学习模型的内存效率更高。这使得训练大型深度学习模型变得更加容易。因此,Pytorch在Facebook、Twitter、Salesforce等大型组织中很受欢迎。使用PyTorch和TensorFlow训练深度学习模型PyTorch和TensorFlow都可以用来构建和训练神经网络模型。TensorFlow适用于SCG(静态计算图),它涉及在模型开始执行之前定义静态图。但是,一旦执行,在模型中调整更改的唯一方法是使用tf.session和tf.placeholder张量。PyTorch非常适合训练RNN(递归神经网络),因为它们在PyTorch中的运行速度比在TensorFlow中快。它在DCG(动态计算图)上工作,可以随时在模型中定义和更改。在DCG中,每个模块都可以独立调试,这使得神经网络的训练更加容易。TensorFlow最近提出了TensorFlowFold,这是一个旨在创建用于处理结构化数据的TensorFlow模型的库。与PyTorch一样,它实现了DCG,在CPU上提供高达10倍的计算速度,在GPU上提供超过100倍的计算速度!借助动态批处理,您现在可以执行大小和结构各不相同的深度学习模型。比较GPU和CPU优化TensorFlow的编译时间比PyTorch更快,为构建真实世界的应用程序提供了灵活性。它可以在各种处理器上运行,从CPU、GPU、TPU、移动设备到RaspberryPi(物联网设备)。另一方面,PyTorch包括张量计算,可以使用GPU将深度神经网络模型加速50倍或更多。这些张量可以驻留在CPU或GPU上。CPU和GPU都是独立的库,无论神经网络大小如何,PyTorch都可以高效地利用它们。社区支持TensorFlow是当今最流行的深度学习框架之一,这也为其带来了庞大的社区支持。它有很好的文档和一组详细的在线教程。TensorFlow还包括许多在GitHub上托管和可用的预训练模型。这些模型为有兴趣使用TensorFlow的开发人员和研究人员提供一些现成的材料,以节省他们的时间和精力。另一方面,PyTorch的社区相对较小,因为它最近才发展起来。与TensorFlow相比,文档不是很好,代码也不是很容易获得。然而,PyTorch确实允许个人与他人分享他们预训练的模型。PyTorch和TensorFlow——权力悬殊的故事目前,TensorFlow显然比PyTorch更受欢迎,原因有很多。TensorFlow规模庞大、经验丰富,最适合实际应用。对于大多数机器学习和深度学习专家来说,这是显而易见的选择,因为它提供了大量的功能,最重要的是它在市场上的成熟度。它有更好的社区支持和多语言API可用。它有一个很好的文档库,并且由于代码随时可用,因此很容易生成。因此,它更适合想要开始深度学习的人,或者想要开发深度学习模型的组织。尽管PyTorch相对较新且社区较小,但速度快且效率高。简而言之,它为您提供了Python的实用性和易用性的所有优势。由于其效率和速度,它是小型研究项目的绝佳选择。如前所述,Facebook、Twitter等公司正在使用PyTorch来训练深度学习模型。然而,使用它还没有成为主流。PyTorch的潜力显而易见,但它还没有准备好挑战TensorFlow这头野兽。然而,随着它的发展,PyTorch进一步优化并提供更多功能直到与TensorFlow相提并论的日子已经不远了。
