深度学习入门该用PyTorch还是Keras?热门公开课换框架背后的学问

简介:
本文来自AI新媒体量子位(QbitAI)

fdea140f9cfc041a66b9c532c1c8cbf7091c496f

你知道fast.ai么?

他们以提供零基础的深度学习课程而闻名,宣称:只要你有高中数学基础、一年的编程经验,就能通过七周的学习,具备一流的深度学习实践能力。

刚刚,他们宣布了一件事。

下一个fast.ai的课程,将完全基于一个使用PyTorch开发的框架,抛弃原来的TensorFlow和Keras框架。这是为什么?

bc3524a4077dae0267b03ca99c591d329a0e0a29

 Jeremy Howard

且听创始人Jeremy Howard详解缘由,也相当于分析了初学者该选择什么样的框架。量子位节选编译如下:

我们为什么开始尝试PyTorch?

当我们开发第二门课《面向程序员的前沿深度学习》的时候,原来选的TensorFlow和Keras框架开始让我们处处碰壁。

比如说,现在自然语言处理中最重要的技术,大概是attention模型。可是我们发现,当时在Keras上没有attention模型的有效实现,而TensorFlow实现没有文档、一直在改,还复杂得毫无必要。

结果是我们决定自己在Keras里做一个attention模型实现,花了好长时间,debug也非常难。

接下来,我们又开始研究dynamic teacher forcing的实现。要实现一个准确的神经网络翻译模型,dynamic teacher forcing是其中的关键,但我们无论是在Keras里还是TensorFlow里,都找不到这个模型的实现。

于是,我们又开始尝试自己搞,这次比attention模型还失败,根本就没做出来能用的。

这时候,PyTorch的第一个预发布版出现了。这个新框架不是基于静态计算图,而是一个动态的框架,这为我们带来了新的希望。它说,动态框架让我们在开发自己的神经网络逻辑时,只需要写普通的Python代码,像正常用Python一样去debug。

我们第一次用PyTorch,就用它从头开始在实现了Attention模型和dynamic teacher forcing,只用了几个小时。

PyTorch在教学的好处

上文提到的那门课,一个重要的目标就是让学生能读最近的论文,然后实现它们。

这非常重要,因为到目前为止,在一些学术界比较关注的领域,我们对深度学习应用的研究反倒很有限,因此,用深度学习解决很多现实世界问题的时候,不仅需要了解基础技术,还要能针对特定的问题和数据去实现定制化的深度学习模型。

PyTorch,就让学生们能充分利用普通Python代码的灵活性和能力,来构建、训练神经网络。这样,他们就能解决更广泛的问题。

PyTorch的另一个好处是,它能让学生们更深入地了解每个算法中发生了什么。用TensorFlow那样的静态计算图库,你一旦声明性地表达了你的计算,就把它发送到了GPU,整个处理过程就是一个黑箱。

但是通过动态的方法,你可以完全进入计算的每一层,清楚地看到正在发生的情况。我们认为学习深度学习的最佳途径就是通过编程、实验,动态的方法正是我们的学生所需要的。

令我们惊奇的是,我们还发现很多模型在PyTorch上训练比在TensorFlow上更快。这和我们所熟知的“静态计算图能带来更多优化,所以应该性能更好”恰恰相反。

在实践中我们看到,有些模型快一点,有些慢一点,每个月都不一样。问题的关键似乎在于以下两点:

PyTorch提高了开发人员的生产力和debug经验,因此可以带来更快的开发迭代和更好的实现;

PyTorch中更小、更集中的开发团队不会对每个功能都进行微优化,而是要寻求“大胜”。

3452a9bc940362a87d8f9b51ffb30dc751bc2fb0

为什么在PyTorch上构建一个新框架?

然而,对于课程的第一部分来说,PyTorch还远远谈不上是一个很好的选择。没有机器学习背景的人根本没法上手。

PyTorch没有Keras那样简单明了的API来训练模型,每个项目都需要几十行代码来实现一个神经网络的基础训练。另外,Keras的默认设置就挺有用,而PyTorch一切都需要详细设置。

不过,Keras还能更好。我们发现大家一直在Keras里犯相同的错误,例如不能在我们有需要时打乱数据,反之亦然。另外,很多新出的最佳实践并没有被纳入Keras,特别是在快速发展的自然语言处理(NLP)领域。

所以我们在想,能不能构建一个比Keras更好的东西,用来快速训练最棒的深度学习模型。

经过一些研究和探索后,我们做到了。我们构建的模型比用Keras构建的更快、更准确、更复杂,而且更少的代码写就。最近对多个领域论文进行的实现,都证明了这一点。

关键是创建一个OO分类,其中包含了所有重要的数据选择(例如预处理、增强、测试、训练和验证集、多类和单类的分类与回归等)以及模型架构的选择。

我们完成这个工作之后,就能在很大程度上自动找出模型与数据最佳的架构、预处理和训练参数。突然间,我们的工作效率大幅提升,而且很少犯错,因为一切都是自动化的。但是我们在每个阶段提供了定制化的能力,所以可以轻松尝试不同的方法。

随着工作效率的提升,我们能够尝试更多的技术,在这个过程中,我们发现了一些非常差的方法。例如,我们发现批量归一化(几乎所有最新CNN架构都用)和模型预训练及微调(每个项目也该用)的组合,可以让标准训练方式的精度下降500%。

我们稍后会逐步放出这个研究的详细情况。(我们还缺一个名字……)

本文作者:李林 问耕
原文发布时间:2017-09-10 
相关文章
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch深度学习 ? 带你从入门到精通!!!
🌟 蒋星熠Jaxonic,深度学习探索者。三年深耕PyTorch,从基础到部署,分享模型构建、GPU加速、TorchScript优化及PyTorch 2.0新特性,助力AI开发者高效进阶。
PyTorch深度学习 ? 带你从入门到精通!!!
|
7月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
596 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
66_框架选择:PyTorch vs TensorFlow
在2025年的大语言模型(LLM)开发领域,框架选择已成为项目成功的关键决定因素。随着模型规模的不断扩大和应用场景的日益复杂,选择一个既适合研究探索又能支持高效部署的框架变得尤为重要。PyTorch和TensorFlow作为目前市场上最主流的两大深度学习框架,各自拥有独特的优势和生态系统,也因此成为开发者面临的经典选择难题。
1215 0
|
7月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
193 1
|
7月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
300 0
|
10月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
422 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
1163 0
|
机器学习/深度学习 运维 安全
深度学习在安全事件检测中的应用:守护数字世界的利器
深度学习在安全事件检测中的应用:守护数字世界的利器
518 22
|
12月前
|
机器学习/深度学习 编解码 人工智能
计算机视觉五大技术——深度学习在图像处理中的应用
深度学习利用多层神经网络实现人工智能,计算机视觉是其重要应用之一。图像分类通过卷积神经网络(CNN)判断图片类别,如“猫”或“狗”。目标检测不仅识别物体,还确定其位置,R-CNN系列模型逐步优化检测速度与精度。语义分割对图像每个像素分类,FCN开创像素级分类范式,DeepLab等进一步提升细节表现。实例分割结合目标检测与语义分割,Mask R-CNN实现精准实例区分。关键点检测用于人体姿态估计、人脸特征识别等,OpenPose和HRNet等技术推动该领域发展。这些方法在效率与准确性上不断进步,广泛应用于实际场景。
1378 64
计算机视觉五大技术——深度学习在图像处理中的应用

热门文章

最新文章

推荐镜像

更多