Tensorflow tf.contrib.learn.LinearRegressor为具有一个特征的数据构建意外错误的模型
我正在为数据建立一个简单的线性回归。数据包括一些人的体重和身高值。整个学习过程非常简单:Tensorflow tf.contrib.learn.LinearRegressor为具有一个特征的数据构建意外错误的模型,tensorflow,linear-regression,tflearn,Tensorflow,Linear Regression,Tflearn,我正在为数据建立一个简单的线性回归。数据包括一些人的体重和身高值。整个学习过程非常简单: MAX_STEPS = 2000 # ... features = [tf.contrib.layers.real_valued_column(feature_name) for feature_name in FEATURES_COL] # ... linear_regressor = tf.contrib.learn.LinearRegressor(feature_columns=features) l
MAX_STEPS = 2000
# ...
features = [tf.contrib.layers.real_valued_column(feature_name) for feature_name in FEATURES_COL]
# ...
linear_regressor = tf.contrib.learn.LinearRegressor(feature_columns=features)
linear_regressor.fit(input_fn=prepare_input, max_steps=MAX_STEPS)
然而,回归者建立的模型出人意料地糟糕。结果如下图所示:
可视化代码(以防万一):
以下是scikit学习中为线性回归类提供的相同数据:
lr_updated = linear_model.LinearRegression()
lr_updated.fit(weight_filtered_reshaped, height_filtered)
以及可视化:
增加步数没有效果。我会假设我用了一种错误的方法从张量流中得到了回归量
看起来您的TF模型确实有效,并且需要足够的步骤才能实现。您需要立即启动它,尽管-200K显示了显著的改进,几乎与sklearn默认值一样好 我认为有两个问题:
输入\u fn
一次为每个步骤注入整个训练集。这只是一种预感,但我怀疑FtrlOptimizer如果一次看到批,可能会做得更好linear_regressor = tf.contrib.learn.LinearRegressor(
feature_columns=features,
optimizer=tf.train.FtrlOptimizer(learning_rate=5.0))
我遇到了类似的问题。解决方法是检查您的输入是否有足够的历元。在对整个训练数据进行多次迭代之前,训练可能不会收敛
linear_regressor = tf.contrib.learn.LinearRegressor(
feature_columns=features,
optimizer=tf.train.FtrlOptimizer(learning_rate=5.0))