Python Keras嵌入-如何将嵌入向量与正确的类别匹配?
我得到了Keras模型,它使用函数api在带有嵌入层的样本上进行训练,将10个唯一值的类嵌入到4维向量中。 在我加载嵌入的权重之后Python Keras嵌入-如何将嵌入向量与正确的类别匹配?,python,tensorflow,keras,deep-learning,Python,Tensorflow,Keras,Deep Learning,我得到了Keras模型,它使用函数api在带有嵌入层的样本上进行训练,将10个唯一值的类嵌入到4维向量中。 在我加载嵌入的权重之后 embeddings_pclass = model.get_layer('Class').get_weights() 我得到了10个向量的列表,比如[.3、.1、.9、.1]等等。一切都很好,按计划进行。但是我在任何地方都找不到如何做逆向工程来找出哪个类与哪个向量匹配?我的班级唯一值是1,2,3,5,7,8,9,12,15,19。我是否应该认为这是列表中向量的唯一
embeddings_pclass = model.get_layer('Class').get_weights()
我得到了10个向量的列表,比如[.3、.1、.9、.1]等等。一切都很好,按计划进行。但是我在任何地方都找不到如何做逆向工程来找出哪个类与哪个向量匹配?我的班级唯一值是1,2,3,5,7,8,9,12,15,19。我是否应该认为这是列表中向量的唯一值的asc顺序
谢谢
E在
tf.keras.layers.Embedding
中没有明确的函数来获取类,但您可以将其视为在权重矩阵中查找最近嵌入的问题。权重矩阵行对应于类(正如您正确猜测的那样),因此您可以使用argmin
获取类值
def get_class (emb_layer, encoded):
w = emb_layer.get_weights()[0]
distances = tf.math.reduce_euclidean_norm(w - encoded, axis = 1)
return tf.math.argmin(distances).numpy()
get_class(model.get_layer('Class'), tf.constant([.3,-.1,.9,.1]))
您的模型期望嵌入向量的索引作为嵌入层的输入(而不是类值)。所以你无论如何要把类值转换成程序中某个地方的嵌入索引。我很困惑。你能更具体地说明你的投入和产出是什么,以及你期望得到什么吗?所以你有10个类来完成一个NLP任务,但是你只能从嵌入层中得到4个数字?也可以随意连接您的网络。