Tensorflow比较灵活,但是它提供的操作比较低级,于是许多封装库应运而生。

slim

导入方式

import tensorflow as tf
import tensorflow.contrib.slim as slim

这个库直接放在contrib模块中,不像tflearn、tflayer、keras都有自己独立的pip包和官方文档。

keras

优点:

  • 时间久远
  • 社区活跃,文档齐全
  • 多种后端:Theano、Tensorflow、MXNet
  • 跨平台:不管是CPU还是GPU,不管是Tensorflow还是别的后端,它都对它们进行了封装
  • 封装完美:类似sklearn,封装了各种细节
  • 学习成本低,编程简单

缺点:

  • 运行效率低,这个问题随着时间是会慢慢改善的

    国外测评说是因为 Keras 最开始只是为了 Theano 而开发的,TensorFlow发布后才写支持TensorFlow的代码,所以为了兼容牺牲了效率
  • 封装过于严密导致可扩展性差

如果想要快速上手,keras是最简单实用的。

tflearn

优点:

  • 高效:比Keras高效,但是比不上TensorLayer高效

缺点:

  • 维护不好,没有中文文档,作者人数较少,开发力量薄弱

tensorlayer

优点:

  • 灵活,可以很简单地实现动态网络结构(Neural Modular Network)
  • 文档齐全,社区活跃。提供了 Google TensorFlow 官网的模块化实现
  • 封装完善:提供scikit-learn式的API,和专业级的API,适合新手到老手过渡

缺点:

  • 发布时间较晚(16年8月份)

最后

把Tensorflow、Pytorch、MXNet、Caffe比作操作系统,那么Keras就像Java,虽然慢些但是跨平台封装好。TensorLayer就像C#,运行快,但是只适用于一个平台。

如果只是想在网络架构、应用方面创新,keras无疑是最佳选择。

参考资料

https://www.zhihu.com/question/50030898/answer/235137938

Tensorflow高级封装的更多相关文章

  1. TensorFlow高层封装:从入门到喷这本书

    目录 TensorFlow高层封装:从入门到喷这本书 0. 写在前面 1. TensorFlow高层封装总览 2. Keras介绍 2.1 Keras基本用法 2.2 Keras高级用法 3. Est ...

  2. TensorFlow TFRecord封装不定长的序列数据(文本)

    TensorFlow TFRecord封装不定长的序列数据(文本) 在实验室环境中,通常数据都是一次性导入内存的,然后使用手工写的数据mini-batch函数来切分数据,但是这样的做法在海量数据下显得 ...

  3. 使用TensorFlow高级别的API进行编程

    这里涉及到的高级别API主要是使用Estimator类来编写机器学习的程序,此外你还需要用到一些数据导入的知识. 为什么使用Estimator Estimator类是定义在tf.estimator.E ...

  4. TensorFlow的封装

    TensorFlow是比较底层的深度学习API,TF-Slim.TFLearn.Keras和TensorLayer均尝试简化TensorFlow/Theano,它们对TensorFlow/Theano ...

  5. 【ADO.NET】7、SQL高级封装

    这次是更加简化的进行封装,所有的cmd操作命令都封装到了 Allcmd() 方法里面别外还有一个别点是 每次执行命令完后,都会垃圾回收, cmd.Parameters.Clear();是先将执行返回的 ...

  6. tensorflow 高级api使用分布式之配置

    """Constructor. Sets the properties `cluster_spec`, `is_chief`, `master` (if `None` i ...

  7. 微信小程序Http高级封装 es6 promise

    公司突然要开放微信小程序,持续蒙蔽的我还不知道小程序是个什么玩意. 于是上网查了一下,就开始着手开发..... 首先开发客户端的东西,都有个共同点,那就是  数据请求! 看了下小程序的请求方式大概和a ...

  8. tensorflow高级库

    1.tf.app.flags tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv.tf.app.flags.DEFINE_xxx()就是添加命令行的optional a ...

  9. TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用

    一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...

随机推荐

  1. JS中三目运算符和if else的区别,你弄得明白吗

    今天写了一个图片轮播的小demo,用到了判断   先试了一下if else,代码如下:   if(n >= count-1){ n =0; }else{ n ++; } 随后代码写完了,准备优化 ...

  2. android api doc 一

    Manifest.permission 用于记录相应权限类 ACCESS_CHECKIN_PROPERTIES 允许在登入数据库的时候读写其中的属性表,并上传改变的值 ACCESS_COARSE_LO ...

  3. python3 AttributeError: module 'sklearn' has no attribute 'linear_model'

    以下导入方式报错 import sklearn lr = sklearn.linear_model.LinearRegression() # 需要导入sklearn的linear_model 修改导入 ...

  4. lstm(一) 演化之路

    递归神经网络引入了时序的反馈机制,在语音.音乐等时序信号的分析上有重要的意义. Hochreiter(应该是Schmidhuber的弟子)在1991年分析了bptt带来的梯度爆炸和消失问题,给学习算法 ...

  5. [NL系列] RNN & LSTM 网络结构及应用

    http://www.jianshu.com/p/f3bde26febed/ 这篇是 The Unreasonable Effectiveness of Recurrent Neural Networ ...

  6. 【转】字符编码笔记:ASCII,Unicode 和 UTF-8

    原文:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html https://www.key-shortcut.com/ ...

  7. Flask刷新问题

    修改页面中内容,特别是图片后,总是刷新不了.调试时,我常常通过修改端口来解决,从80-99不断改. 服务器部署,也遇到同样问题,重启web服务器,重启计算机都不行,网页已经改过来了,但是图片还是老图片 ...

  8. String escape/unescape into XML

    Is there any C# function which could be used to escape and un-escape a string, which could be used t ...

  9. JavaScript代码不执行

    一天先后有两个同事问我为啥他的js代码出现了莫名其妙的问题 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "h ...

  10. Android Studio 之 导入Eclipse项目常见问题及解决方案

    在将Eclipse做的Android项目成功导入Android Studio 后,启动生成,遇到一些问题,现总结如下: 问题1:图片命名问题 AS对图片命名要求比eclipse严格,图片名称只能有&q ...