ValueError:feature_columns 的项目必须是 DenseColumn 或 CategoricalColumn

Posted

技术标签:

【中文标题】ValueError:feature_columns 的项目必须是 DenseColumn 或 CategoricalColumn【英文标题】:ValueError: Items of feature_columns must be either a DenseColumn or CategoricalColumn 【发布时间】:2020-01-20 00:59:53 【问题描述】:

代码很简单:

    x_data = np.linspace(0, 10.0, 1000000)
    y_true = (0.5 * x_data) + 5 
    x_train, x_eval, y_train, y_eval = train_test_split(x_data, y_true, test_size = 0.25, random_state=101)
    input_func = tf.estimator.inputs.numpy_input_fn('x':x_train, y_train, 
                                                batch_size=8, num_epochs=None, shuffle= True)
    estimator = tf.estimator.LinearRegressor(feature_columns=feat_cols)
    estimator.train(input_fn=input_func, steps=1000)

错误:

INFO:tensorflow:调用model_fn。 -------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用 最后)在() ----> 1 estimator.train(input_fn=input_func,steps=1000) 2 #eval_metrics = estimator.evaluate(input_fn=eval_input_func, steps=1000)

8 帧 /usr/local/lib/python3.6/dist-packages/tensorflow/python/feature_column/feature_column_v2.py 在 init(self, feature_columns, units, sparse_combiner, trainable, 名字,**kwargs) 第498章 499 'feature_columns 的项目必须是 ' --> 500 'DenseColumn 或 CategoricalColumn。给定:'.format(column)) 501 502 self._units = 单位

ValueError:feature_columns 的项必须是 DenseColumn 或 分类列。给定:SequenceNumericColumn(key='x', shape=(1,), default_value=0.0, dtype=tf.float32, normalizer_fn=None)

【问题讨论】:

【参考方案1】:

以下代码适用于训练和预测。

x_data = np.linspace(0, 10.0, 1000)
print(x_data.shape)
y_true = (0.5 * x_data) + 5
print(y_true.shape)
x_train, x_eval, y_train, y_eval = train_test_split(x_data, y_true, test_size=0.25, random_state=101)
train_func = tf.estimator.inputs.numpy_input_fn('x': x_train, y_train, batch_size=8, num_epochs=10, shuffle=True)

features = [tf.contrib.layers.real_valued_column("x", dimension=1)]
estimator = tf.estimator.LinearRegressor(feature_columns=features)

estimator.train(input_fn=train_func, steps=100) # Fit the model to training data.

eval_func = tf.estimator.inputs.numpy_input_fn('x': x_eval, batch_size=1, num_epochs=1, shuffle=False)

result = estimator.predict(eval_func) # Predict scores

print("predict_scores", list(result))

【讨论】:

以上是关于ValueError:feature_columns 的项目必须是 DenseColumn 或 CategoricalColumn的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow feature_column 介绍与体验

Tensorflow:如何为 numpy 矩阵输入创建 feature_columns

TensorFlow2 特征列 feature_column

Tensorflow 1.x 的 feature_columns 项必须是 _FeatureColumn。给定类型是列表

feature_columns 的项目必须是 _FeatureColumn 给定:_VocabularyListCategoricalColumn

结合 scikit-learn 模型使用 TensorFlow 预处理(tf.feature_column)