如何选择工具是深度学习初学者的难题。本文作者以Keras和Pytorch库为例,提供解决该问题的思路。当你决定学习深度学习时,总会有一个问题——学习哪个工具?有许多用于深度学习的框架和库。本文比较了Keras和Pytorch这两个流行的库,因为两者都易于使用,初学者也可以轻松掌握。那么你应该选择哪一个?本文分享一个解决方案。Thebestwaytomakeanappropriatechoiceistohaveanoverviewofeachframework'scodestyle.开发任何解决方案时,首先也是最重要的是开发工具。在开始项目之前,您必须设置开发工具。一旦开始,就不能一直换工具,否则会影响你的开发效率。作为初学者,您应该尝试不同的工具并找到最适合您的工具。但是当你认真开发一个项目时,这些事情应该提前计划好。每天都有新的框架和工具进入市场,最好的工具在定制和抽象之间取得了很好的平衡。工具应该与您的思维方式和编码风格保持同步。所以如果你想找到一个适合你的工具,首先你要尝试很多不同的工具。我们使用Keras和PyTorch训练了一个简单的模型。如果您是深度学习的新手并且不完全理解某些概念,请不要担心。从现在开始,关注这两个框架的代码风格,试着想象哪个最适合你,哪个工具你最适应,最容易适应。这两个工具最大的区别是:PyTorch默认为eager模式,而Keras运行在TensorFlow等框架上(现在主要是TensorFlow),其默认模式为graph模式。最新版本的TensorFlow还提供了类似于PyTorch的eager模式,但速度较慢。如果您熟悉NumPy,您可以将PyTorch视为具有GPU支持的NumPy。此外,现在有几个以高级API(如Keras)和PyTorch作为后端框架的库,如Fastai、Lightning、Ignite等,如果你对它们感兴趣,那你就多了一个选择的理由火炬。不同的框架有不同的模型实现方式。让我们看一下这两个框架中的简单实现。本文提供了指向GoogleColab的链接。打开链接并试用代码。这可以帮助您找到最适合您的框架。我不会给出太多细节,因为在这里,我们的目标是看一下代码结构,并简要熟悉一下框架的风格。Keras中的模型实现以下示例是数字识别的实现。代码很容易理解。您需要打开colab,试验代码,至少自己运行一下。Keras附带了一些示例数据集,例如手写数字的MNIST数据集。上面的代码可以加载这些数据,数据集图像是NumPy数组格式。Keras还做了一些图像预处理,使数据适合模型。上面的代码显示了模型。在Keras(TensorFlow)上,我们首先需要定义我们要使用的东西,然后立即运行它。在Keras中,我们无法随时随地进行实验,但PyTorch可以。上面的代码用于训练和评估模型。我们可以使用save()函数来保存模型,以便稍后可以使用load_model()函数加载模型。predict()函数用于获取模型对测试数据的输出。现在我们已经大致了解了Keras的基本模型实现,让我们继续讨论PyTorch。PyTorch中的模型实现研究人员大多使用PyTorch,因为它具有灵活性和实验性代码风格。你可以调整任何东西并控制PyTorch中的一切,但随着控制而来的是责任。使用PyTorch进行试验很容易。因为您不需要在运行之前定义所有内容。我们能够轻松地测试每一步。因此,在PyTorch中比在Keras中调试更容易。接下来,让我们看一个简单的数字识别模型实现。上面的代码导入了所需的库并定义了一些变量。n_epochs和momentum等变量是必须设置的超参数。这里不赘述,我们的目标是了解代码的结构。上面的代码旨在声明用于加载用于训练的数据批次的数据加载器。下载数据的方式有很多种,不受框架的限制。如果您刚刚开始深度学习,上面的代码可能看起来很复杂。在这里,我们定义模型。这是创建网络的通用方法。我们扩展nn.Module以在前向传递中调用forward()函数。PyTorch实现非常简单,可以根据需要进行修改。上面的代码片段定义了训练和测试函数。在Keras中,我们需要调用fit()函数来自动完成这些事情。但是在PyTorch中,我们必须手动执行这些步骤。像Fastai这样的高级API库简化了这一点,并且需要更少的代码来训练。最后,保存并加载模型进行二次训练或预测。这部分没有太大区别。PyTorch模型通常有pt或pth扩展名。选择框架的建议在学习了一种模型并理解了它的概念之后,迁移到另一种模型并不难,只是需要一些时间。本文作者给出的建议是两个都学,但是没有必要都学的很深。您应该从一个开始并在该框架中实施您的模型,同时还获得其他框架的知识。这有助于您阅读其他人使用其他框架编写的代码。永远不要被框架所限制。从适合您的框架开始,然后尝试学习另一个。如果您发现另一个更适合使用,请切换到另一个。由于PyTorch和Keras的大部分核心概念相似,因此两者之间的转换非常容易。Colab链接:PyTorch:https://colab.research.google.com/drive/1irYr0byhK6XZrImiY4nt9wX0fRp3c9mx?usp=sharingKeras:https://colab.research.google.com/drive/1QH6VOY_uOqZ6wjxP0K8anBAXmI0AwQCm?usp=sharing原文翻译机器之心》,微信公众号“机器之心(id:almosthuman2014)”]点此查看作者更多好文
