Keras 简介

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。 ————Keras官方定义

简单来说,Keras 是一个 独立的、机器学习的高级 API ;而且在 TensorFlow2.0 发布之时被包含进了 TensorFlow ,因此我们可以在 TensorFlow2.0 及其以后的版本中直接使用 Keras 。

1. Keras 是什么以及它的由来

Keras 的前身是 François Chollet 为 ONEIROS 项目所的编写的代码,在 2015 年开源成为神经网络的开发工具。Keras 最初参考了 Torch 的风格并且完全由 Python 编写。

Keras 从创建之初到后来被 TensorFlow 所支持,经历了很多的变化,具体变化如下:

  • Keras 最初在 2015 年被开源发布,从诞生之初就被设计成为一个机器学习的高级 API;
  • Keras 在 2016 年发布了第一个正式版本 1.0.0,意味着进入稳定版本阶段;
  • 2017 年 Keras 发布了 2.0.0 版本并被整合进 TensorFlow;
  • 2018 年在 TensorFlow2.0 公开后便被正式确立为 tf.keras 高阶 API;
  • 直到如今,使用 tf.keras 依然是使用 TensorFlow 构建模型的最快捷方式。

也就是说 Keras 并不是一个单独的框架,他只是一个 高级的 API 库 ;利用它 简易和快速的原型设计 ,我们可以根据其 API 实现高级网络的构建。进而使用 TensorFlow 进行训练等进一步的工作。

而在 本课程之中我们所提到的 Keras 都是指的是 TensorFlow 中的 Keras 模块

2. tf.Keras 与 TesnorFlow 结合的优势

说到 Keras 与 TensorFlow1.x 的结合,就不得不说一下 Keras 的特点:

  • Keras 基于 Python 发展而来,因此它的使用符合 Python 开发者的使用习惯
  • Keras 提供的 API 较为高阶 ,我们可以不用关心底层的实现的一些细节
  • Keras 拥有 友好、全面的文档 ,我们可以轻松地进行学习
  • 便于使用 ,得益于高阶 API ,我们可以轻松地实现模型的构建与训练
  • 扩展性好 ,我们可以使用 TensorFlow 来扩展 Keras ,从而实现更加定制化的需求

而 TensorFlow 最大的特点就在于快速、快捷,我们能够以很高的性能实现一些模型的训练工作。

自 2017 年开始,Keras 的大部分组件被整合至 Tensorflow 的 Python API中,但是却没有作为高阶 API(tf.keras)整合进 TensorFlow 之中。因此大多数工作人员依然采用的是独立安装的 Kears 进行高层模型的构建,而使用 TensorFlow 作为底层框架进行训练。

在 TensorFlow2.x 之中,我们便可以在 TensorFlow 之中使用 Keras ,从而将两者的优势互相结合, 一方面我们可以快速的构建模型,另外一方面我们也可以进行模型的快速训练

3. 函数式 API 编程

说到 Keras,就不得不说一下 TensorFlow2.0 引入的函数式 API 编程。也就是 Eager Execution

所谓函数式 API 编程,通俗来讲就是我们 每一个语句都是通过函数的调用来实现的 ,而这也意味着我们可以 摒弃掉某一条语句的下文而单独执行

这似乎很符合我们的编程的习惯,但是在 TensorFlow1.x 之中,并不默认支持 Eager Execution 。通常来讲我们在 TensorFlow1.x 之中我们需要首先创建一个 Session ,然后才能运行程序。

而随着 Keras 的引入,TesnorFlow 开始支持 Eager Execution,也就是说我们可以完全采用函数调用的方式来进行机器学习的开发。这无疑大大降低了开发的门槛,也可以帮助我们更加快捷、方便地进行模型的相应的工作。

我们可以来看一下具体代码的区别,在 TensorFlow1.x 之中,我们在训练的过程之中一般采用如下的方式进行训练:

with tf.Session() as session:
      session.run(tf.global_variables_initializer())
      session.run(tf.tables_initializer())
      model.fit(X_train, y_train, validation_data=(X_valid, y_valid), epochs=10, batch_size=64)

可以看到,我们首先需要创建一个 会话(tf.session) ,然后才能在其中进行模型的训练操作。

而在 TensorFlow2.x 之中,我们只需要如下代码就可以实现模型的训练:

  model.fit(X_train, y_train, validation_data=(X_valid, y_valid), epochs=10, batch_size=64)

相信通过代码的比对大家就可以轻松地看出 Eager Execution 的优势:

  • 程序流程明了,符合大多数Python工作者的编码习惯;
  • 代码简单,方便运行时调试;
  • Eager Execution 提供了更加简洁明了的接口,而避免了 session 复杂易错的接口。

而在以后的学习与开发之中,我们都会通过 Eager Execution 模式来进行。

4. 小结

TensorFlow 中的 Keras 模块为一个新的、易用、快捷的模块,我们可以依靠 Keras 模块来快速地构建网络。同时它也拥有着高度的可扩展性,我们可以使用 TensorFlow 对其进行轻松的扩展;从而大大提升我们的开发效率。

图片描述

本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈