import paddle
import paddle.nn as nn
import paddle.nn.functional as F
EPSILON = 1e-5
BATCH_SIZE = 8
NUM_EMBEDD = 3
EMBEDD_DIM = 5
class EntityEmbedding(nn.Layer):
def __init__(self, num_embeddings, embedding_dim, centroid):
super(EntityEmbedding, self).__init__()
self.embedding = nn.Embedding(num_embeddings=num_embeddings,
embedding_dim=embedding_dim)
self.centroid = paddle.to_tensor(centroid).detach().unsqueeze(0)
pass
def forward(self, x):
x = x.unsqueeze(1)
d = 1. / ((x - self.centroid).abs() + EPSILON)
w = F.softmax(d.squeeze(2), 1)
v = paddle.mm(w, self.embedding.weight)
return v
pass
x = paddle.randn((BATCH_SIZE, 1))
centroid = paddle.randn((NUM_EMBEDD, 1))
model = EntityEmbedding(num_embeddings=NUM_EMBEDD,
embedding_dim=EMBEDD_DIM,
centroid=centroid)
print(model(x))
最后
以上就是独特香菇最近收集整理的关于EntityEmbedding实体嵌入的飞桨Paddle实现的全部内容,更多相关EntityEmbedding实体嵌入内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复