提取嵌入层的输出

时间:2018-11-25 13:08:09

标签: tensorflow keras categorical-data embedding

我正在尝试建立一个回归模型,为此我有一个具有很高基数的名义变量。我正在尝试对该列进行绝对嵌入。

输入:

df["nominal_column"]

输出:

the embeddings of the column.

我想单独使用嵌入列的操作,因为我需要将其作为传统回归模型的输入。有没有办法单独提取输出。

P.S我不是要代码,关于此方法的任何建议都很好。

1 个答案:

答案 0 :(得分:0)

如果嵌入是模型的一部分并且您对其进行了训练,则可以使用keras的功能性API获取图形中任何中间操作的输出:

x=Input((number_of_categories,))
y=Embedding(parameters_of_your_embeddings)(x)
output=Rest_of_your_model()(y)
model=Model(inputs=[x],outputs=[output,y])

如果在训练模型之前执行此操作,则必须定义自定义损失函数,该函数仅处理部分输出。另一种方法是只使用一个输出来训练模型,然后使用两个输出来创建相同的模型,并从训练后的模型中设置第二个模型的权重。

如果要从模型中获取嵌入矩阵,则可以使用嵌入层的get_weights方法,该方法以numpy数组的形式返回权重。