Keras和TensorFlow究竟哪个会更好?.doc
《Keras和TensorFlow究竟哪个会更好?.doc》由会员分享,可在线阅读,更多相关《Keras和TensorFlow究竟哪个会更好?.doc(10页珍藏版)》请在三一文库上搜索。
1、Keras和TensorFlow究竟哪个会更好?深度学习发展势头迅猛,但近两年涌现的诸多深度学习框架让初学者无所适从。如 Google 的 TensorFlow、亚马逊的 MXNet、Facebook 支持的 PyTorch、Theano、Caffe、CNTK、Chainer、百度的 PaddlePaddle、DSSTNE、DyNet、BigDL、Neon 等等。在这其中,TensorFlow 作为最为著名的用于深度学习生产环境的框架,它有一个非常强大的生态体系支持,然而,相比其他框架,TensorFlow 也有其劣势,如速度较慢、使用上手难。而基于 TensorFlow 基础上构建的 Ker
2、as 提供了简单易用的 API 接口,非常适合初学者使用。2017 年 1 月,随着 Keras 的作者、谷歌 AI 研究员 Francois Chollet 的一条消息的宣布,Keras 成为第一个被添加到 TensorFlow 核心的高级别框架,Keras 从此成为 Tensorflow 的默认 API。“那么,我应该在项目中使用 Keras 还是 TensorFlow?Keras 和 TensorFlow 究竟哪个会更好?我应该把时间花在研究 TensorFlow 还是 Keras 上?”在与深度学习的研究人员、从业者包括工程师在内的交谈中,“Deep Learning for Comp
3、uter Vision with Python ”一书作者 Adrian Rosebrock 听到了他们的困惑。就 Keras 和 TensorFlow 而言,Rosebrock 认为开发者更应该关注的是当 Keras 实际上已被完全采用并整合到 TensorFlow 后,自己可以:使用 Keras 易于使用的界面定义模型。如果需要 TensorFlow 的特定功能,或需要实现 Keras 不支持但 TensorFlow 支持的自定义功能,则调入 TensorFlow。他给出的建议是先使用 Keras ,然后下载 TensorFlow 以获取可能需要的任何特定功能。文本中,Rosebrock展
4、示了如何训练使用 Keras 的神经网络和使用直接构建在 TensorFlow 库中的 Keras+TensorFlow 集成(具有自定义功能)的模型。下面开始正文:对比 Keras 和 TensorFlow 没什么意义前些年,深度学习领域的研究人员、开发人员和工程师必须经常做出一些选择:我应该选择易于使用但自定义困难的 Keras 库?还是应该使用难度更大的 TensorFlow API,编写大量代码?(更不用说一个不那么容易使用的 API 了。)如果你陷于“我应该使用 Keras 还是 TensorFlow”这样的问题,你可以退一步再看,其实这是一个错误的问题,因为你可以选择同时使用两个。
5、我会使用基于 TensorFlow 的标准 keras 模块和 tf.keras 模块,来实现一个卷积神经网络(CNN)。然后,基于一个示例数据集,来训练这些 CNN,然后检查所得结果,你会发现,Keras 和 TensorFlow 是可以和谐共处的。虽然自一年多之前,TensorFlow 就宣称 Keras 将被并入 TensorFlow 的官方发布版本中,但令我诧异的是,仍有很多深度学习开发者没有意识到,他们可以通过 tf.keras 子模块来调用 Keras。更重要的是,Keras 与 TensorFlow 是无缝衔接的,使得我们将 TensorFlow 的源代码直接写入 Keras 模
6、型中。在 TensorFlow 中结合 Keras 使用,会有双赢效果:你可以使用 Keras 提供的简单、原生 API 来创建自己的模型。Keras 的 API 类似于 scikit-learn 的,都可称为机器学习的优质 API。Keras 的 API 是模块化的、基于 Python ,并且极其易于使用。当你需要实现一个自定义的层或更复杂的损失函数时,你可以深入使用 TensorFlow,将代码自动地与 Keras 模型相结合。Keras 通过 tf.keras 模块构建到 TensorFlow 中可以看到,我们通过引入 TensorFlow (tf) 并调用 tf.keras,在 Pyt
7、hon shell 中展示了 Keras 实际上是 TensorFlow 的一部分。tf.keras 中的 Keras 允许我们使用标准的 Keras 包获取下面这样简单的前馈神经网络:接下来基于 TensorFlow 的一部分 tf.keras 子模块,来实现同样的网络:然而这是否意味着你必须使用 tf.keras?从而现在放弃使用标准 Keras 包了吗?当然不是!Keras 依然作为一个库,与 TensorFlow 分开,进行独立操作,所以仍存在未来两者会分开的可能性;然而,我们知道 Google 官方同时支持 Keras 和 TensorFlow,分开似乎又是极不可能发生的。但重点在于
8、:如果你更喜欢只基于 Keras 来编程,那就这么做吧,以后可以一直如此。但如果你是 TensorFlow 用户,你应该开始考虑 Keras API 了,因为:它是基于 TensorFlow 创建的它更易于使用当你需要用纯 TensorFlow 实现特定性能或功能时,它可以直接用于你的 Keras。示例数据集CIFAR-10 数据集有10个类,我们用该数据集来展示本文的观点为了简单起见,我们就在 CIFAR-10 数据集上训练两个单独的卷积神经网络 (CNN),方案如下:方法 1 :以 TensorFlow 作为后端的 Keras 模型方法 2 :使用tf.keras中 Keras 子模块在介
9、绍的过程中我还会展示如何把自定义的 TensorFlow 代码写入你的 Keras 模型中。CIFAR-10 数据集包括10个单独的类,50,000 张训练图片和 10,000 张测试图片。项目结构我们可以在终端使用 tree 指令来查看该项目的结构:pyimagesearch模块被包括在与网络条目相关的下载中。它不能通过 pip 来安装,但包含在 Downloads后的结果中。我们先回顾一下该模块中两个重要的 Python 文件:minivggnetkeras.py:此文件是基于 Keras 实现的 MiniVGGNet 网络,一个基于 VGGNet 的深度学习模型。minivggnettf
10、.py:此文件是基于 TensorFlow + Keras (如 tf.keras)实现的 MiniVGGNet 网络。该项目的根目录包含两个 Python 文件:train_network_keras.py:用 Keras 实现的训练脚本;train_network_tf.py: TensorFlow + Keras 实现需要的训练脚本,与前者基本相同;但我们仍会进行说明,并标出不同之处。每个脚本都会生成各自训练的 accuracy 和 loss 曲线:plot_keras.pngplot_tf.png接下来就会向大家介绍基于 Keras 和 TensorFlow + Keras (tf.k
11、eras) 实现的 MiniVGGNet 网络和他们的训练过程。用 Keras 训练一个神经网络用 Keras 实现的一个 miniVGGNet 卷积神经网络结构训练我们网络的第一步是在 Keras 中构建网络的架构。如果你已经熟悉 Keras 训练神经网络的基础知识,那么我们就开始吧 (如果你对此并不了解的话,请参考相关的介绍性文章)。相关链接:https:/pyimagesearch/2018/09/10/keras-tutorial-how-to-get-started-with-keras-deep-learning-and-python/首先,打开 minivggnetkeras.p
12、y 文件并插入以下代码:从导入一系列所需的 Keras 库开始构建模型。然后,定义一个的MiniVGGNetKeras类:我们在第 12 行定义了build方法,并定义inputShape和input参数。 我们假定以 channel last 的规则排序,所以inputShape参数中最后一个值应该对应的是depth值。下面开始定义卷积神经网络的主体结构:从上面这段代码你可以观察到我们在每次应用池化 (pooling) 之前都堆叠了一系列卷积 (conv2D),ReLU 激活函数和批规范化层 (batch normalization),以降低卷积操作后的空间维度。此外,我们还使用 Dropo
13、ut 技术来防止模型的过拟合现象。对于图层类型和有关术语的知识,可以参考以前的 Keras 教程https:/pyimagesearch/2018/09/10/keras-tutorial-how-to-get-started-with-keras-deep-learning-and-python/如果想深入研究的话,推荐书“Deep Learning for Computer Vision with Python ”https:/pyimagesearch/deep-learning-computer-vision-python-book/然后,将全连接层 (FC) 添加到网络结构中,代码如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Keras TensorFlow 究竟 哪个 更好
链接地址:https://www.31doc.com/p-3253442.html