Tensorflow高级封装
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高级封装的更多相关文章
- TensorFlow高层封装:从入门到喷这本书
目录 TensorFlow高层封装:从入门到喷这本书 0. 写在前面 1. TensorFlow高层封装总览 2. Keras介绍 2.1 Keras基本用法 2.2 Keras高级用法 3. Est ...
- TensorFlow TFRecord封装不定长的序列数据(文本)
TensorFlow TFRecord封装不定长的序列数据(文本) 在实验室环境中,通常数据都是一次性导入内存的,然后使用手工写的数据mini-batch函数来切分数据,但是这样的做法在海量数据下显得 ...
- 使用TensorFlow高级别的API进行编程
这里涉及到的高级别API主要是使用Estimator类来编写机器学习的程序,此外你还需要用到一些数据导入的知识. 为什么使用Estimator Estimator类是定义在tf.estimator.E ...
- TensorFlow的封装
TensorFlow是比较底层的深度学习API,TF-Slim.TFLearn.Keras和TensorLayer均尝试简化TensorFlow/Theano,它们对TensorFlow/Theano ...
- 【ADO.NET】7、SQL高级封装
这次是更加简化的进行封装,所有的cmd操作命令都封装到了 Allcmd() 方法里面别外还有一个别点是 每次执行命令完后,都会垃圾回收, cmd.Parameters.Clear();是先将执行返回的 ...
- tensorflow 高级api使用分布式之配置
"""Constructor. Sets the properties `cluster_spec`, `is_chief`, `master` (if `None` i ...
- 微信小程序Http高级封装 es6 promise
公司突然要开放微信小程序,持续蒙蔽的我还不知道小程序是个什么玩意. 于是上网查了一下,就开始着手开发..... 首先开发客户端的东西,都有个共同点,那就是 数据请求! 看了下小程序的请求方式大概和a ...
- tensorflow高级库
1.tf.app.flags tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv.tf.app.flags.DEFINE_xxx()就是添加命令行的optional a ...
- TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用
一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...
随机推荐
- {{jQuery源码分析}}jQuery对象初始化的多种传参数形式
jQuery对象初始化的传参方式包括:1.$(DOMElement)2.$('<h1>...</h1>'), $('#id'), $('.class') 传入字符串, 这是最常 ...
- MFC增强----任务对话框CTaskDialog类
/** 注意:从Windows Vista系统才开始支持CTaskDialog类,所以在使用时最好调用 CTaskDialog::IsSupported() 方法做判断 同时:CTaskDialog类 ...
- 【MySQL】PostgresSQL-MySQL对比
PostgresSQL-MySQL对比 (5 条消息)PostgreSQL 与 MySQL 相比,优势何在? - 知乎 IOC匹配 - 天眼公共空间 - 360企业安全Confluence 调查分析 ...
- CSS命名规范和规则
一.命名规则 ).尽量不缩写,除非一看就明白的单词 二.class的命名 (1).red { color: red; } .f60 {color: #f60; } .ff8600{ color: #f ...
- python实现itemCF and userCF
http://my.oschina.net/zhangjiawen/blog/185625 1基于用户的协同过滤算法: 基于用户的协同过滤算法是推荐系统中最古老的的算法,可以说是这个算法的诞生标志了推 ...
- Linq-Contains查询
customers.Where(c => c.Name.Contains("john"));
- 关于Spring mvc 一次请求Controller执行两次的问题
资源路径为空时也会导致重复请求.< span style="background-image:url('');" >相关推荐< /span >,此时就会出现 ...
- java多线程分块上传并支持断点续传最新修正完整版本[转]
package com.test; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.Fi ...
- USACO Arithmetic Progressions(暴力)
题目请点我 题解: 这道题的题意是找出集合里全部固定长度为N的等差数列.集合内的元素均为P^2+q^2的形式(0<=p,q<=M).时间要求5s内.本着KISS,直接暴力. 可是后来竟超时 ...
- 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)
火星坐标.百度坐标.WGS84坐标转换代码(JS.python版) 一.JS版本源码 github:https://github.com/wandergis/coordTransform /** * ...