我正在尝试实现用于回归的广泛和深度张量流模型(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的一个可重复的例子。
提前致谢。
答案 0 :(得分:0)
绝对损失值通常意味着很多。
如果您只为reduce而不是reduce_mean执行reduce_sum,那么增加批量大小会增加绝对损失值。
举几个例子,运行模型,看看输出是什么。您的数据可能存在一些微不足道的错误。稍微改变您的输入,看看预测如何变化。举几个随机的例子(来自你的测试集),得到预测并自己比较。