本文将探讨PyTorch和TensorFlow这两种流行深度学习框架之间的关键相似点和不同点。为什么选择这两个框架,而不是其他的呢?目前有很多的深度学习框架,而且很多都可用于实际的生产,我之所以选择这两个只是因为我对它们特别感兴趣。
起源
TensorFlow由谷歌大脑开发,并且在谷歌公司中广泛地应用于研究和生产需求。它的前身是闭源的DistBelief。
PyTorch是Torch框架的表情,Torch是基于lua开发的,在Facebook公司里被广泛使用。然而,PyTorch的出现并不是为了支持流行语言而对Torch进行简单的包装,它被重写和定制出来是为了得到更快的速度和本地化。
比较这两个框架最好的方法就是用它们编写代码。我专门为这篇文章写了一个jupyter笔记,你可以在这里找到代码,文章涉及到的所有的代码都有。
首先,我们用这两个框架为下面这个函数编写一个简单的近似器:
我们将尝试用给定的_x_和函数值_f(x)_来计算未知参数_phi_的值。是的,使用随机梯度下降算法对于这个例子来说简直就是杀鸡用牛刀,很容易就能找到解法,但是这个简单的例子正好能实现我们这篇文章的目的。
我们首先用PyTorch来解决这个问题:
如果你对深度学习框架比较熟悉,那么你可能已经注意到我们正在纯手工打造梯度下降算法。这很不方便,但很幸运,PyTorch有optimize模块,其中包含了诸如RMSProp或Adam等流行优化算法的实现。我们将使用包含momentum的SGD。
PyTorch的损耗函数和指数图
正如你所看到的,我们很快就从训练数据推断出了真正的指数值。现在我们继续使用TensorFlow来试试:
TensorFlow的损耗函数和指数图
正如你所看到的,TensorFlow也能达到相同的目标。但它需要更多的迭代次数来得到指数值,但我相信,这是因为我没有弄清楚优化器的参数才使得两者的结果不具有可比性。
现在我们准备探讨一些不同点。
TensorFlow是一个非常强大非常成熟的深度学习库,具有非常强大的可视化功能,以及有多个可供选择的框架来进行高级模型开发。它具有用于生产的部署选项,以及对移动平台的支持。如果你有以下需求,那么TensorFlow是一个很好的选择:
1. 开发生产模型
2. 开发需要部署在移动平台上的模型
3. 需要良好的社区支持和齐全的文档
4. 想要各种形式的丰富的学习资源
5. 想要或需要使用Tensorboard
6. 需要大规模的分布式模型训练
PyTorch仍然是一个年轻的框架,但其发展速度越来越快。如果你有以下需求,它可能会比较适合你:
1. 用于研究,或者是用于生产的非功能性需求并不是很苛刻
2. 需要更好的开发和调试体验
3. 爱所有Python化的东西
然而,我们通过调研发现,80%的0-3岁互联网人没有系统的学习过Tensorflow、PyTorch方向,缺乏很多项目实战,处于比较浅层面的对比。
网上解读Tensorflow、PyTorch文章非常多但知识点零散,学习 起来抓不住重点,大多数人还都本着一说就会一学就废的心理,看得多,动手少,所以急需一套学习资料。
最近整理一套“Tensorflow、PyTorch”两大框架必备的学习资料,这套资料内容非常的详尽全面,非常适合想要进入AI人工智能领域的人学习。
课程讲解带人工智能两大框架,掌握人工智能和NLP领域所需从零开始训练网络到卷积神经网络再到深度学习开源框架等。包括多种机器学习算法。(资料已经全部整理好)