transformer:
position-embedding:
残差:我也会了
addnorm:我也会了
class Position_Embedding(nn.Module):def __init__(self, max_len, embedding_dim):self.max_len = max_lenself.embedding_dim = embedding_dimresult = torch.ones(self.max_len, self.embedding_dim, requires_grad=False)pos = torch.arange(max_len)[:, None]i_even = torch.arange(0, embedding_dim, 2)[None, :]i_odd = torch.arange(1, embedding_dim, 2)[None, :]even_value = pos / (10000**(2*i_even/self.embedding_dim))odd_value = pos / (10000**(2*i_odd/self.embedding_dim))result[:, 0::2] = torch.sin(even_value)result[:, 1::2] = torch.cos(odd_value)self.position_embedding = resultdef forward(self, x):position_embedding = x + self.position_embeddingreturn position_embedding
self-attention以及mask-padding部分:
周末忙完了自己实现一遍,带进任务,看看效果。
attention组合位置信息,全连接组合特征信息
transformer中的masked loss:不要算pad部分的loss tf中有对应的函数(也可以利用CROSSentropy的一个ignore参数)
上一篇:verilog(基础知识)
下一篇:【Linux】-- 进程概念