tf.estimator库

说到tf.estimator库,我们就不得不说tensorflow最原始的使用方法了:

一般情况下对于一组数据,包含很多的特征值(连续的数据,和非连续的类型)

传统的tensorfow实现方法则是,把数据取出来之后自己进行特征的处理和加工;

然后用我们定义的模型通过tf.placeholder这个变量把把我们处理后的数据喂养给我们的模型;

这样是不是感觉很麻烦?那么有没有简化的方法呢,

没错,tensorflow提供了这个方法,就在tf.estimator 库下:

他的这个库下又包含了许多的模型:

包括线性模型,回归模型,深度模型,分类模型以及这几种模型的组合:


通常模型效率较高的就是那两个组合模型了:DNNLinearConbinedClassifer和DNNLinearConbinedRegressor

一个可以用于分类问题,另一个可以用于预测问题(得到的一般是数值类型的数)

那么他到底封装了哪些方法呢:

首先要说的就是他的一个叫做特征工程相关的功能了,对于数据特征的处理,

它包括一般的连续特征(numeric_column定义)

还有离散特征,(categorical_column_with_list,和categorical_column_with_hash_bucket) 这两个得到的是稀疏的特征

还有离散特征的组合:cross_column,

还有就是嵌入特征(embedding_column)一般用在深度模型的特征,


值得注意的是:在两个组合模型中,对于线性模型可以接受稀疏或者是密集的特征(sparse,dense);但是对于深度模型只能接受密集的特征;

对于模型的定义:一般是通过estimator = DNNLinearConbinedRegressor来定义(以深度线性组合的回归模型为例)

这个模型可不简单,他是属于一种”wide and deep"的模型,他组合了深度模型和线性模型,他的输出是深度模型与线性模型的叠加;

显而易先:这个模型里面的参数包括了线性模型里所需的参数和深度模型里所需的参数,(所谓的参数,也就是我们在做一般模型是定义的变量)


那么模型有了,我们应该怎样把数据输入呢,对于传统的tensorflow我们一般是通过placeholder的feed_dict喂养数据的;

但是在estimator下就不太一样了:他在这里对输入也进行了封装,而且你的输入必须是返回example 和label的一个函数,

输入和模型说了,那么就是训练和测试和预测了,这里再说一下,对于训练和测试以及预测的输入都是通过函数实现的,

也就是说他的训练函数,测试函数,以及预测函数接受的输入都是一个函数

这样就把estimator整体的流程大致说了一遍:如果想看一下这个模型下的一个简单的demo:

请看:https://blog.csdn.net/weixin_38859557/article/details/80913750


猜你喜欢

转载自blog.csdn.net/weixin_38859557/article/details/80912867