【问题标题】:Encoding Target Column for Classification in Tensorflow编码Tensorflow中分类的目标列
【发布时间】:2017-09-22 10:20:27
【问题描述】:

我已经在 Tensorflow 上工作了一段时间,但我似乎无法弄清楚的一件事是如何在 tf.contrib.learn 模型中对模型的分类目标列进行编码。

我知道我们定义了一个类似于以下代码的输入函数:

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's 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 模型的输入函数中使用什么占位符。

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    DNNClassifier 支持标签作为无稀疏张量。预期标签类似于 [[4], [5], [1]],其中每个值对应一个整数 id。如果你有字符串标签,你可以使用label_keys 参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 2018-12-17
      • 2020-09-25
      • 2021-06-11
      • 2018-10-16
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多