我使用函数式api对样本进行嵌入层训练,将10个唯一值的类嵌入到4维向量中,得到了Keras模型。加载嵌入权重后
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
发布于 2020-10-27 15:49:36
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]))https://stackoverflow.com/questions/64538245
复制相似问题