Keras-使用多个分类变量的嵌入

Keras-使用多个分类变量的嵌入,keras,embedding,Keras,Embedding,如果我正确理解了嵌入矩阵的概念,它们的存在将提供一种比使用热编码更有效的方法来编码分类变量。似乎,如果有多个分类变量作为Keras模型的输入,则需要为每个分类变量使用单独的嵌入矩阵。然而,我找不到一种方法使用Keras提供的嵌入类来使用多个分类变量的嵌入。文档中的示例仅显示了当模型的输入是单个分类变量时如何使用嵌入。如果输入包含多个分类变量,以及可能不使用嵌入的其他变量(例如,连续变量),是否有人可以提供一个工作示例,说明如何在Keras中使用嵌入?对于每个分类变量,可以单独嵌入。希望下面的代码

如果我正确理解了嵌入矩阵的概念,它们的存在将提供一种比使用热编码更有效的方法来编码分类变量。似乎,如果有多个分类变量作为Keras模型的输入,则需要为每个分类变量使用单独的嵌入矩阵。然而,我找不到一种方法使用Keras提供的嵌入类来使用多个分类变量的嵌入。文档中的示例仅显示了当模型的输入是单个分类变量时如何使用嵌入。如果输入包含多个分类变量,以及可能不使用嵌入的其他变量(例如,连续变量),是否有人可以提供一个工作示例,说明如何在Keras中使用嵌入?

对于每个分类变量,可以单独嵌入。希望下面的代码有帮助

    inputss = []
    embeddings = []
    for c in self.categorical_vars:
        inputs = Input(shape=(1,),name='input_sparse_'+c)
        #no_of_unique_cat  = data_lr[categorical_var].nunique()
        embedding_size = min(np.ceil((no_of_unique_cat)/2), 50 )
        embedding_size = int(embedding_size)
        embedding = Embedding(no_of_unique_cat+1, embedding_size, input_length = 1)(inputs)
        embedding = Reshape(target_shape=(embedding_size,))(embedding)
        inputss.append(inputs)
        embeddings.append(embedding)
    input_numeric = Input(shape=(1,),name='input_constinuous')
    embedding_numeric = Dense(16)(input_numeric)
    inputss.append(input_numeric)
    embeddings.append(embedding_numeric)

    x = Concatenate()(embeddings)

    x = Dense(10, activation = 'relu')(x)
    x = Dropout(.15)(x)
    out_control = Dense(output_shape)(x)