python 自我注意GAN中的自我关注机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 自我注意GAN中的自我关注机制相关的知识,希望对你有一定的参考价值。

classSelf_Attn(nn.Module):

""" Self attention Layer"""

  def__init__(self,in_dim,activation):

    super(Self_Attn,self).__init__()

    self.chanel_in = in_dim

    self.activation = activation

    self.query_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim// 8, kernel_size= 1)

    self.key_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim// 8, kernel_size= 1)

    self.value_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim , kernel_size= 1)

    self.gamma = nn.Parameter(torch.zeros( 1))

    self.softmax = nn.Softmax(dim= -1) #

  def forward(self,x):

"""

inputs :

x : input feature maps( B X C X W X H)

returns :

out : self attention value + input feature

attention: B X N X N (N is Width*Height)

"""

    m_batchsize,C,width ,height = x.size()

    proj_query = self.query_conv(x).view(m_batchsize, -1,width*height).permute( 0, 2, 1) # B X CX(N)

    proj_key = self.key_conv(x).view(m_batchsize, -1,width*height) # B X C x (*W*H)

    energy = torch.bmm(proj_query,proj_key) # transpose check

    attention = self.softmax(energy) # BX (N) X (N)

    proj_value = self.value_conv(x).view(m_batchsize, -1,width*height) # B X C X N

    out = torch.bmm(proj_value,attention.permute( 0, 2, 1) )

    out = out.view(m_batchsize,C,width,height)

    out = self.gamma*out + x

    return out,attention

以上是关于python 自我注意GAN中的自我关注机制的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud系列教程第九篇-Eureka自我保护机制

Eureka源码浅读---自我保护机制

十、(Eureka篇)服务发现和自我保护机制

传递变量,创建实例,自我,类的机制和用法:需要解释 [关闭]

F版本SpringCloud 5—Eureka集群和自我保护机制

Eureka系列Eureka自我保护机制