1. 文章
  2. 文章详情

深入浅出TensorFlow高层封装库

TensorFlow的高层封装主要有4个:

第一个是TensorFlow-Slim;

第二个是tf.contrib.learn(之前也被称为skflow);

第三个是TFLearn;

最后一个是Keras。

本文将大致介绍这几种不同的高层封装的使用方法,并通过其中常用的三种方式在MNIST数据集上实现卷积神经网络。

TensorFlow-Slim

TensorFlow-Slim是一个相对轻量级的TensorFlow高层封装。通过TensorFlow-Slim,定义网络结构的代码可以得到很大程度的简化,使得整个代码更加可读。下面的代码对比了使用原生态TensorFlow实现卷积层和使用TensorFlow-Slim实现卷积层的代码:

深入浅出TensorFlow(六)TensorFlow高层封装

从上面的代码可以看出,使用TensorFlow-Slim可以大幅减少代码量。省去很多与网络结构无关的变量声明的代码。虽然TensorFlow-Slim可以起到简化代码的作用,但是在实际应用中,使用TensorFlow-Slim定义网络结构的情况相对较少,因为它既不如原生态TensorFlow的灵活,也不如下面将要介绍的其他高层封装简洁。但除了简化定义神经网络结构的代码量,使用TensorFlow-Slim的一个最大好处就是它直接实现了一些经典的卷积神经网络,并且Google提供了这些神经网络在ImageNet上训练好的模型。下表总结了通过TensorFlow-Slim可以直接实现的神经网络模型:

深入浅出TensorFlow(六)TensorFlow高层封装

深入浅出TensorFlow(六)TensorFlow高层封装

Google提供的训练好的模型可以在github上tensorflow/models/slim目录下找到。在该目录下也提供了迁移学习的案例和代码。

tf.contrib.learn

tf.contrib.learn是TensorFlow官方提供的另外一个对TensorFlow的高层封装,通过这个封装,用户可以和使用sklearn类似的方法使用TensorFlow。通过tf.contrib.learn训练模型时,需要使用一个Estimator对象。Estimator对象是tf.contrib.learn 进行模型训练(train/fit)和模型评估(evaluation)的入口。

tf.contrib.learn模型提供了一些预定义的 Estimator,例如线性回归(tf.contrib.learn.LinearRegressor)、逻辑回归(tf.contrib.learn.LogisticRegressor)、线性分类(tf.contrib.learn.LinearClassifier)以及一些完全由全连接层构成的深度神经网络回归或者分类模型(tf.contrib.learn.DNNClassifier、tf.contrib.learn.DNNRegressor)。

除了可以使用预先定义好的模型,tf.contrib.learn也支持自定义模型,下面的代码给出了使用tf.contrib.learn在MNIST数据集上实现卷积神经网络的过程。更多关于tf.contrib.learn的介绍可以参考Google官方文档。

https://www.tensorflow.org/get_started/tflearn

深入浅出TensorFlow(六)TensorFlow高层封装

深入浅出TensorFlow(六)TensorFlow高层封装

TFLearn

TensorFlow的另外一个高层封装TFLearn进一步简化了tf.contrib.learn中对模型定义的方法,并提供了一些更加简洁的方法来定义神经网络的结构。和上面两个高层封装不一样,使用TFLearn需要单独安装,安装的方法为:

pip install tflearn

下面的代码介绍了如何通过TFLearn来实现卷积神经网络。更多关于TFLearn的用法介绍可以参考TFLearn的官方网站(http://tflearn.org/

深入浅出TensorFlow(六)TensorFlow高层封装

运行上面的代码,可以得到类似如下的输出:

深入浅出TensorFlow(六)TensorFlow高层封装

Keras

Keras是一个基于TensorFlow或者Theano的高层API。

下面的代码介绍了如何通过Keras来实现卷积神经网络。更多关于Keras的用法介绍可以参考Keras的官方网站(http://tflearn.org/

深入浅出TensorFlow(六)TensorFlow高层封装

深入浅出TensorFlow(六)TensorFlow高层封装

运行上面的代码,可以得到类似如下的输出:

深入浅出TensorFlow(六)TensorFlow高层封装

关注人工智能的落地实践,与企业一起探寻 AI 的边界,AICon 全球人工智能技术大会火热售票中,8 折倒计时一周抢票,详情点击:

http://t.cn/Rl2MGtT

《深入浅出TensorFlow》迷你书现已发布,关注公众号“AI前线”,ID:ai-front,回复关键字:TF,获取下载链接!

深入浅出TensorFlow(六)TensorFlow高层封装

参考:https://www.jianshu.com/p/6f35d013c140

发表评论

登录后才能评论

评论列表(0条)