基于TensorFlow Estimators和Dense神经网络的回归模型

基于TensorFlow Estimators和Dense神经网络的回归模型

Tensorflow Estimators - 它提供了对低级Tensorflow核心操作的高级抽象。它适用于Estimator实例,它是TensorFlow对完整模型的高级表示。

使用Estimators创建Tensorflow模型非常简单易行,我将使用Estimator API创建一个简单的回归模型来预测房价。

示例 - 预测任何给定面积和房屋类型的房价,对于此示例,特征:平方英尺(数字数据),类型(房屋或公寓)和目标/输出:价格(数字数据)

import tensorflow as tf
featcols = [
tf.feature_column.numeric_column("sq_footage"),
tf.feature_column.categorical_column_with_vocabulary_list("type",["house","apt"])
]

上面的Python代码片段声明了模型的特色栏目,有两个特征对于这种模式,首先平方英尺和第二类型(住宅/公寓)

现在我将使用 estimator API来构建用于预测房价的回归模型。

model = tf.estimator.LinearRegressor(featcols)

机器学习模型使用的是标准estimator回归API[pre-made estimators],我传递的是上面声明的特征列。

为了训练机器学习模型,我需要用目标值(房价)提供输入数据,为了演示的目的,我将使用一些示例输入,但是对于实际使用,您需要提供大量输入数据

def train_input_fn():
 features = {"sq_footage":[1000,2000,3000,1000,2000,3000],
 "type":["house","house","house","apt","apt","apt"]}
 labels = [ 500 , 1000 , 1500 , 700 , 1300 , 1900 ]
return features, labels
model.train(train_input_fn,steps:100)

当我调用train方法时,它接受两个参数,首先是输入数据的方法名,这里我定义了输入函数“train_input_fn”,它将返回特性列和标签(目标),其次是steps(100),它将迭代数据集(100)多次。

一旦训练完成,机器学习模型将用于预测,我们将通过预测新房价格来测试模型。

def predict_input_fn():
 features = {"sq_footage":[1500,1800],
 "type":["house""apt"]}
return features
predictions = model.predict(predict_input_fn)
print(next(predictions))
print(next(predictions))

“ predict_input_fn ”方法提供预测的输入数据,model. predict方法迭代predict_input_fn方法中提供的所有输入数据,并返回一个python generator(prediction),该generator可用于遍历预测。

为了提高模型的准确性,我将向您展示如何使用具有一些隐藏层的神经网络。我再次使用TensorFlow estimator API来调用dense神经网络回归器,它将隐藏层作为参数之一。

基于TensorFlow Estimators和Dense神经网络的回归模型

model = tf.estimator.DNNRegressor(featcols, hidden_units=[3,2])

这里两个模型的输入向量是一样的。我们可以重用相同的特征列。

下面是一些可以根据dense神经网络、隐藏层的数量和大小、激活函数、正则化参数和优化器进行调整的内容。但最重要的是,它们几乎都有好的默认值。对于DNNregressor,唯一的强制性参数是隐层,Python代码如下:

model = tf.estimator.DNNRegressor(feature_columns=...,
 hidden_units = [10,5],
 activation_fn = tf.nn.relu,
 dropout=0.2,
 optimizer="Adam")

CheckPoints

当您开始训练较大的机器学习模型时,这很重要。您可以获得这些检查点,只需在使用TensorFlow Estimators创建模型时指定文件夹目录。

model = tf.estimator.LinearRegressor(featcols, './model_trained')

相关推荐