基于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神经网络回归器,它将隐藏层作为参数之一。
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')