如何从零使用 Keras + TensorFlow 开发一个复杂深度学习模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从零使用 Keras + TensorFlow 开发一个复杂深度学习模型相关的知识,希望对你有一定的参考价值。

最近刚开始使用theano, 经验不多,连个基本的模型都跑不通,于是去看了下Keras,源码比较简洁,可以当作theano的示例教程来看,感受如下:

    文档看似很全,每个layer是干啥的,每个参数是啥都写了,但是不去读代码,实际很多人是无法从文档理解其具体用法的。这点看issue里的讨论里可以看出。同样,example似乎很多,而且都能直接run,还都是real world的数据集,看似很好,但是实际上,对于新手,如果需要的模型跟example里的不完全一样,不容易搞懂到底需要把输入输出的数据搞成啥格式。举个例子,example都是做的classification的,没有做sequence labeling的例子,如果想拿来做个pos tagging,不知道数据如何组织。当然,这些其实花一天读下代码或者好好翻翻issue讨论就可以解决了,但我相信不少人不会去认真读代码或者看讨论,而是直接换个工具。我感觉目前的doc只有懂了代码的人才能看懂,不懂得看文档还是没啥用。

    2.项目很简单所以开发者不多,但是很活跃,每天都有新东西加进去。今天增加了一个新的分支后端可以用theano或者tensorflow了,不过貌似由于不支持scan,backend用tensorflow的没实现recurrent layer。他们也意识到文档的问题,觉得需要为小白用户多加点tutorial而不是光给develop看。

    我没用过其他的framework,仅说keras

拿来学习theano基本用法,很不错

库本身的代码,比较简单易读,我作为python菜鸟,也能看懂。目前model有sequential和grapgh两种,前者并不是指recurrent而是说网络是一层层堆的(也包括recurrent).其他的主要概念包括layer,regularizer, optimizer,objective都分离开。layer用于build每层的输出函数,model会用最后一层的输出,根据objective和每个layer的regularizer来确定最终的cost,然后在update时用optimizer来更新参数。把这四个看下加上model里的fit函数,就会用theano啦。

很多模型都能cover,seq2seq这种也有现成的可用。建议不要光看example,多看看github上的 issues讨论,实在找不到,直接提问。

效率方面,我不懂theano怎么优化,感觉keras的这种封装,没什么成本,跟自己用原生theano是一样的。当然,theano本身就好慢啊。。估计是我不懂用吧。。

参考技术A

Keras 是提供一些高可用的 Python API ,能帮助你快速的构建和训练自己的深度学习模型,它的后端是 TensorFlow 或者 Theano 。本文假设你已经熟悉了 TensorFlow 和卷积神经网络,如果,你还没有熟悉,那么可以先看看这个10分钟入门 TensorFlow 教程和卷积神经网络教程,然后再回来阅读这个文章。

在这个教程中,我们将学习以下几个方面:

    为什么选择 Keras?为什么 Keras 被认为是深度学习的未来?

    在Ubuntu上面一步一步安装Keras。

    Keras TensorFlow教程:Keras基础知识。

    了解 Keras 序列模型
    4.1 实际例子讲解线性回归问题

    使用 Keras 保存和回复预训练的模型

    Keras API
    6.1 使用Keras API开发VGG卷积神经网络
    6.2 使用Keras API构建并运行SqueezeNet卷积神经网络。

如何从零使用 Keras + TensorFlow 开发一个复杂深度学习模型?

参考技术A

Keras 是提供一些高可用的 Python API ,能帮助你快速的构建和训练自己的深度学习模型,它的后端是 TensorFlow 或者 Theano 。本文假设你已经熟悉了 TensorFlow 和卷积神经网络,如果,你还没有熟悉,那么可以先看看这个10分钟入门 TensorFlow 教程和卷积神经网络教程,然后再回来阅读这个文章。

在这个教程中,我们将学习以下几个方面:

    为什么选择 Keras?为什么 Keras 被认为是深度学习的未来?

    在Ubuntu上面一步一步安装Keras。

    Keras TensorFlow教程:Keras基础知识。

    了解 Keras 序列模型
    4.1 实际例子讲解线性回归问题

    使用 Keras 保存和回复预训练的模型

    Keras API
    6.1 使用Keras API开发VGG卷积神经网络
    6.2 使用Keras API构建并运行SqueezeNet卷积神经网络。

参考技术B

安装 h5py,用于模型的保存和载入:

pip install h5py

还有一些依赖包也要安装。

pip install numpy scipy

pip install pillow

    为什么选择Keras的原因:

Keras 是 Google 的一位工程师François Chollet 开发的一个框架,可以帮助你在 Theano 上面进行快速原型开发。后来,这被扩展为 TensorFlow 也可以作为后端。并且最近,TensorFlow决定将其作为 contrib 文件中的一部分进行提供。

Keras 被认为是构建神经网络的未来,以下是一些它流行的原因:

轻量级和快速开发:Keras 的目的是在消除样板代码。几行 Keras 代码就能比原生的 TensorFlow 代码实现更多的功能。你也可以很轻松的实现 CNN 和 RNN,并且让它们运行在 CPU 或者 GPU 上面。

    Keras基础知识

在Keras中主要的数据结构是 model ,该结构定义了一个完整的图。你可以向已经存在的图中加入任何的网络结构。import keras

Keras 有两种不同的建模方式:

Sequential models:这种方法用于实现一些简单的模型。你只需要向一些存在的模型中添加层就行了。

Functional API:Keras的API是非常强大的,你可以利用这些API来构造更加复杂的模型,比如多输出模型,有向无环图等等。

以上是关于如何从零使用 Keras + TensorFlow 开发一个复杂深度学习模型的主要内容,如果未能解决你的问题,请参考以下文章

从零开始,手把手教你使用Keras和TensorFlow构建自己的CNN模型

不怕学不会 | 使用TensorFlow从零开始构建卷积神经网络

如何评价深度学习框架Keras

如何减少 Tensorflow/Keras 使用的 CPU 数量?

如何使用 tensorflow 在 keras 中禁用 GPU?

如何使用 Tensorflow 张量设置 Keras 层的输入?