【问题标题】:tf.keras how to handle a categorical column which has a list of values of variable lengthtf.keras 如何处理具有可变长度值列表的分类列
【发布时间】:2020-11-25 08:57:51
【问题描述】:

我正在使用tf.keras 来构建我的模型。通常我使用tf.keras.layers.Embedding 层来处理分类数据。例如,如果输入列之一采用以下格式

应用

脸书
whatsapp
Instagram

使用上面的数据,我对数据进行标记编码,并通过如下的嵌入层传递。

inp = tf.keras.Input(shape=(1,), name="app_input")
emb_layer = tf.keras.layers.Embedding(vocab_size, embedding_size, input_length=1, name="emb_" + feature)(inp)

但是如果我的列在每一行中有多个值怎么办?例如,数据采用以下格式:

应用程序

[脸书,whatsapp]
[whatsapp, instagram, fb]

我不能使用 one-hot 编码,因为独特的应用程序数量巨大。我想为这些应用生成嵌入,但不确定如何处理上述数据。

【问题讨论】:

    标签: tensorflow machine-learning keras deep-learning tf.keras


    【解决方案1】:

    一种方法(也是一种常用的方法)是在输入序列的长度上选择一些固定的上限,然后使用额外的“空”元素填充短于该最大值的序列,例如使用tf.keras.preprocessing.sequence.pad_sequences.

    然后您将使用填充序列作为嵌入层的输入 emb_layer = tf.keras.layers.Embedding(vocab_size, embedding_size, input_length=max_len),其中max_len 是上面提到的上限。

    【讨论】:

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