Tensorflow:如何在词汇特征列中输入数据?

Tensorflow: How to feed in data in vocabulary feature column?

我目前正在研究基于文本输入的分类问题,我的主要问题如下:

我是否正确地假设我可以将我的完整句子解析为 一个字符串 到词汇表列,或者我是否需要将句子分成单词- 就像一个 字符串列表 ?

我的数据看起来像这样:

    A    B    text
1   ..   ..   My first example text
2   ..   ..   My second example text

(除了我的文本输入功能之外,还有一些其他分类信息 - 但它们与本文无关)

我的代码基本上是这样的:

// data import and data preparation

categorical_voc = tf.feature_column.categorical_column_with_vocabulary_list(key="text", vocabulary_list=vocabulary_list)

embedding_initializer = tf.random_uniform_initializer(-1.0, 1.0)

embed_column_dim = math.ceil(len(vocabulary_list) ** 0.25)
embed_column = tf.feature_column.embedding_column(
    categorical_column=categorical_voc,
    dimension=embed_column_dim,
    initializer=embedding_initializer,
    trainable=True)

estimator = tf.estimator.DNNClassifier(
    optimizer=optimizer,
    feature_columns=feature_columns,
    hidden_units=hidden_units,
    activation_fn=activation_fn,
    dropout=dropout,
    n_classes=target_size,
    label_vocabulary=target_list,
    config=config)

train_input_fn = tf.estimator.inputs.pandas_input_fn(
    x=train_data,
    y=train_target,
    batch_size=batch_size,
    num_epochs=1,
    shuffle=True)

estimator.train(input_fn=train_input_fn)

感谢您的帮助:)

编辑 1: 需要自定义输入功能的朋友

def input_fn(features, labels, batch_size):
    if labels is None:
        dataset = tf.data.Dataset.from_tensor_slices(features)
    else:
        dataset = tf.data.Dataset.from_tensor_slices((features, labels))
    # Shuffle, repeat, and batch the examples.
    dataset = dataset.shuffle(100).repeat().batch(batch_size)
    return dataset

def train_input_fn():
    return input_fn(features=_train_data,
                    labels=_train_target,
                    batch_size=train_batch_size)

estimator.train(input_fn=lambda: train_input_fn(), steps=total_training_steps, hooks=train_hooks)

对于那些在弄清楚如何处理词汇栏中的句子时遇到同样问题的人..

到目前为止,我的结论是我必须使用字符串数组来填充词汇表列。这里唯一的问题是 pandas_input_fn() 不支持一系列列表。这就是为什么我回到我的自定义输入功能!