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自我保护机制