3
我一直在研究Tensorflow一段时间,但是我似乎无法弄清楚的一件事是如何在tf.contrib中对模型的分类目标列进行编码.learn模型。在Tensorflow中对目标列进行分类编码
我知道,我们定义它类似于像下面的代码输入功能:
def input_fn(joined):
continuous_cols = {k: tf.constant(joined[k].values)
for k in CONTINUOUS_COLUMNS}
categorical_cols = {k: tf.SparseTensor(
indices=[[i, 0] for i in range(joined[k].size)],
values=joined[k].values,
dense_shape=[joined[k].size, 1])
for k in CATEGORICAL_COLUMNS}
# Merges the two dictionaries into one.
feature_cols = dict(continuous_cols.items() | categorical_cols.items())
target = tf.constant(joined[target_col].values)
return feature_cols, target
def train_input_fn():
return input_fn(train_frame)
def test_input_fn():
return input_fn(test_frame)
这工作完全正常的二元分类或情况下,我们预编码的目标变量要么sklearn的LabelEncoder或任何其他方法。但是如何使用tensflow编码该变量,以便tf.contrib.learn可以接受它。
我试图为目标列的代码更改为以下:
target = tf.SparseTensor(
indices=[[i, 0] for i in range(joined[target_col].size)],
values=joined[target_col].values,
dense_shape=[joined[target_col].size, 1])
由于它是一个字符串变量,所以我想稀疏张量应该这样做 但这给出了错误:
ValueError: SparseTensor is not supported.
任何人都可以帮助我指定我应该在目标分类变量的DNNClassifier模型的输入函数中使用的占位符。