keras和tensorflow,Python深度学习中keras,tensorflow,scikit-learn哪个好用?
keras和tensorflow,Python深度学习中keras,tensorflow,scikit-learn哪个好用?详细介绍
本文目录一览: keras和tensorflow的关系
Keras作为前端,TensorFlow作为后端。1.一直在用keras,说点个人感受。2.和TensorFlow对应的是Theano,Torch,而Caffe专精于图像处理。3.Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口。
如何从零使用 Keras + TensorFlow 开发一个复杂深度学习模型?
Keras 是提供一些高可用的 Python API ,能帮助你快速的构建和训练自己的深度学习模型,它的后端是 TensorFlow 或者 Theano 。本文假设你已经熟悉了 TensorFlow 和卷积神经网络,如果,你还没有熟悉,那么可以先看看这个10分钟入门 TensorFlow 教程和卷积神经网络教程,然后再回来阅读这个文章。
在这个教程中,我们将学习以下几个方面:
为什么选择 Keras?为什么 Keras 被认为是深度学习的未来?
在Ubuntu上面一步一步安装Keras。
Keras TensorFlow教程:Keras基础知识。
了解 Keras 序列模型4.1 实际例子讲解线性回归问题
使用 Keras 保存和回复预训练的模型
Keras API6.1 使用Keras API开发VGG卷积神经网络6.2 使用Keras API构建并运行SqueezeNet卷积神经网络。
安装 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来构造更加复杂的模型,比如多输出模型,有向无环图等等。
各位老大,import tensorflow.keras as keras和 from tensorflow import keras;这两种写法有什么区别?
以上两种写法的实现的功能一样, 第一种是 import 导入 ,as 另做别名。 第一种的意思是 将 tensorflow库里面的keras功能导入,如果后面不用as的话,每次调用代码要写全tensorflow.keras ,所以为了实现本地简写代码 用as 把导入的tensorflow.keras功能使用keras别名即可调用。
第二种是 from import 从哪个包 导入某个功能 ,所以上面就是将TensorFlow库里面的keras功能导入。 调用直接用keras了
如果要从一个库里面调用多个方法的话,而不是全部导入的话。 建议使用第二种,代码会比较简洁明了。如果使用第一种会要写很多import。 而是用第二种 写一个行 后面逗号跟多个方法和类就好了。例如:from tensorflow import keras,方法1,类1,.....
Python深度学习中keras,tensorflow,scikit-learn哪个好用?
scikit-learn主要是用于机器学习,要是深度学习的话不太适合。
keras和tensorflow其实是一家,tensorflow自带了tf.keras,所以我觉得两个可以都学,不冲突。
keras能够快速搭建一个较为简单的模型,通过调用keras.layers中的类就可以搭建一个简单的模型,tensorflow相比于keras能够改变具体模型内部的计算方法,更适合深入研究算法。
所以我建议先用keras入门,等到keras逐渐不能满足需求时,再用tensorflow与keras结合的方法构建你自己的模型结构
可以去看看tensorflow2的教程(因为tf2大部分都是用keras编写,所以也会有人叫kerasflow)
如何从零使用 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本身就好慢啊。。估计是我不懂用吧。。
keras和卷积神经网络关系
密切相关。Keras是一个高级神经网络API,它可以运行在TensorFlow、Theano和CNTK等深度学习框架之上,提供了一种简单易用的方式来构建和训练神经网络模型。而卷积神经网络(Convolutional Neural Network,CNN)是一种特殊的神经网络结构,它在图像识别、语音识别、自然语言处理等领域取得了很好的效果。Keras提供了一些内置的卷积神经网络模型,如VGG、ResNet、Inception等,同时也提供了一些卷积神经网络的层,如卷积层、池化层、批量归一化层等,可以方便地构建卷积神经网络模型。因此,Keras和卷积神经网络是密切相关的,Keras可以帮助我们更加方便地构建和训练卷积神经网络模型。
如何比较Keras,TensorLayer,TFLearn
首先它们都是把神经网络抽象成不同的Layer,以便用户自定义网络。
Keras
优点:Theano时代就推出了,使用者较多,有个人维护的中文文档,虽然更新很慢。纯scikit-learn式编程,隐藏了数据流的细节,数据流没有叙述的很清楚,到目前为止,并没有理解keras的时间数据输入方式...
缺点:运行TensorFlow时很慢,拓展性差(国外测评说是因为 Keras 最开始只是为了 Theano 而开发的,TensorFlow发布后才写支持TensorFlow的代码,所以为了兼容牺牲了效率)。不适合科研单位和企业,换句话说毕业以后要重新学另外一个框架..... 复杂的情况会出现error,这时候调试只能靠运气了。。
TensorLayer
优点:对学术界的优势是灵活性很强,甚至可以很简单地实现动态网络结构(Neural Modular Network).... 对工业界的优势是运行速度快。教程很强大,还包含了 Google TensorFlow 官网的模块化实现。同时提供scikit-learn式的API,和专业级的API,适合新手到老手过渡。
缺点:刚刚推出(16年8月份)使用者少,但我发现中文使用者不少,有很多微信群、qq群可以交流,有可能和TL官方推出中文文档有关。
Tflearn
优点:不像Keras那样兼容两种后端,所以效率比 Keras 快,但根据国外测评还是比 TensorLayer慢一些。
缺点:维护不好,作者居然在github issues那里说 “有时间再实现 seq2seq”,我晕... 有对话为证Seq2Seq Machine Translation · Issue #120 · tflearn/tflearn · GitHub
国外对 TensorLayer 和 Keras 比较的结论基本是企业界和学术界使用 TensorLayer+TensorFlow 搭配,学生使用Keras(若未来想从事机器学习的工作,我个人建议还是好好看下TensorFlow吧)。
个人观点:学习 TensorFlow 是一个大趋势,题主提到的库都是基于 TensorFlow 开发的,选择一个库非常关键。若想熟练掌握深度学习,不妨先学习下 TensorFlow 本身
tensorflow与对应的keras版本
若版本不对应,可能报如下错误:
AttributeError: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
为什么tensorflow2.8没有keras
1、tensorflow2.8没有keras是因为需要下载一个keras插件。2、还有可能是tensorflow2.8没有更新,使用的还是老版本。
keras是什么
Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化 [1] 。
Keras在代码结构上由面向对象方法编写,完全模块化并具有可扩展性,其运行机制和说明文档有将用户体验和使用难度纳入考虑,并试图简化复杂算法的实现难度 [1] 。Keras支持现代人工智能领域的主流算法,包括前馈结构和递归结构的神经网络,也可以通过封装参与构建统计学习模型 [2] 。在硬件和开发环境方面,Keras支持多操作系统下的多GPU并行计算,可以根据后台设置转化为Tensorflow、Microsoft-CNTK等系统下的组件 [3] 。
Keras的主要开发者是谷歌工程师Fran?ois Chollet,此外其GitHub项目页面包含6名主要维护者和超过800名直接贡献者 [4] 。Keras在其正式版本公开后,除部分预编译模型外,按MIT许可证开放源代码