【问题标题】:Extract the output of the embedding layer提取嵌入层的输出
【发布时间】:2023-03-12 10:03:02
【问题描述】:
我正在尝试建立一个回归模型,为此我有一个具有非常高基数的名义变量。我正在尝试获取该列的分类嵌入。
输入:
df["nominal_column"]
输出:
the embeddings of the column.
我想单独使用嵌入列的操作,因为我需要将其作为传统回归模型的输入。有没有办法单独提取该输出。
P.S 我不是要代码,任何关于该方法的建议都会很棒。
【问题讨论】:
标签:
tensorflow
keras
categorical-data
embedding
【解决方案1】:
如果嵌入是模型的一部分并且您对其进行训练,那么您可以使用 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 数组中的权重。