在tensorflow中实现DNNLinearCombinedRegressor模型

时间:2018-01-12 10:16:17

标签: tensorflow deep-learning regression

我正在尝试实现用于回归的广泛和深度张量流模型(DNNLinearCombinedRegressor)。以下是我使用的代码的概述

def input_function(num_epochs, train_set):
#defined input function for training.

def build_model_col():
# for conversion of input pandas columns into tenforflow feature columns. also created embedding columns for a few columns. 
    return wide_column, deep_column

def build_estimator(model_dir):
    wide_columns, deep_columns = build_model_col()
    hidden_units = [1024, 512, 256]
    return tf.estimator.DNNLinearCombinedRegressor(
       model_dir = model_dir,
       linear_feature_columns = wide_columns,
       dnn_feature_columns = deep_columns,
       dnn_hidden_units = hidden_units)

test_data = pd.read_csv(...)
def main():
    shutil.rmtree(modeldir)
    model = build_estimator(modeldir)
    model.train(input_function = lambda: input_function(200, test_data))

if __name__ = "__main__":
    main()

在任何步骤中,损失(mean_squared_error)从未低于1000。由于训练数据集中“y”的最大值仅为40,最小值为0,因此这种方法很高并且存在一些错误。

我可能遗漏了一些东西。我搜索了很多,但没有遇到DNNLinearCombinedRegressor的一个可重复的例子。

提前致谢。

1 个答案:

答案 0 :(得分:0)

绝对损失值通常意味着很多。

如果您只为reduce而不是reduce_mean执行reduce_sum,那么增加批量大小会增加绝对损失值。

举几个例子,运行模型,看看输出是什么。您的数据可能存在一些微不足道的错误。稍微改变您的输入,看看预测如何变化。举几个随机的例子(来自你的测试集),得到预测并自己比较。