Back to Annotated Deep Learning Paper Implementations

efficient.py

docs/si/transformers/primer_ez/efficient.html

latest3.3 KB
Original Source

hometransformersprimer_ez

View code on Github

#

1importmath23importtorch4fromtorchimportnn56fromlabml\_helpers.moduleimportModule7fromlabml\_nn.transformersimportMultiHeadAttention

#

අවකාශීයගැඹුර නැණවත් සම්මුතිය

මෙයඇත්ත වශයෙන්ම මන්දගාමී ය

10classSpatialDepthWiseConvolution(Module):

#

  • d_k එක් එක් හිසෙහි නාලිකා ගණන වේ
17def\_\_init\_\_(self,d\_k:int,kernel\_size:int=3):

#

21super().\_\_init\_\_()22self.kernel\_size=kernel\_size

#

අපිපයිටෝර්ච් Conv1d මොඩියුලය භාවිතා කරමු. එක් එක් නාලිකාව සඳහා වෙනම සංවහනයක් (විවිධ කර්නල් සමඟ) සිදු වන පරිදි නාලිකා ගණනට සමාන වන පරිදි කණ්ඩායම් ගණන අපි සකස් කරමු. අපි දෙපැත්තටම පුරවන එකතු කර පසුව නිවැරදි වඩාත්ම kernel_size - 1 ප්රති

. ල ලබා ගනිමු

27rng=1/math.sqrt(kernel\_size)28self.kernels=nn.Parameter(torch.zeros((kernel\_size,d\_k)).uniform\_(-rng,rng))

#

x හැඩය ඇත [seq_len, batch_size, heads, d_k]

30defforward(self,x:torch.Tensor):

#

35res=x\*self.kernels[0].view(1,1,1,-1)3637foriinrange(1,len(self.kernels)):38res[i:]+=x[:-i]\*self.kernels[i].view(1,1,1,-1)3940returnres

#

බහු-Dconv-හිසඅවධානය (MDHA)

අපි බහු-ප්රධාන අවධානය අපගේ මුල් ක්රියාත්මක කිරීම දීර් and කරන අතර විමසුම, යතුර සහ වටිනාකම් ප්රක්ෂේපණ සඳහා අවකාශීය ගැඹුර-නැණවත් සම්මුතිය එක් කරමු.

43classMultiDConvHeadAttention(MultiHeadAttention):

#

51def\_\_init\_\_(self,heads:int,d\_model:int,dropout\_prob:float=0.1):52super().\_\_init\_\_(heads,d\_model,dropout\_prob)

#

බහු-ප්රධාන අවධානය විමසුම නිර්මාණය කරනු ඇත, ප්රධාන සහ අගය ප්රක්ෂේපනය මොඩියුල self.query``self.key , සහ self.value .

අපිඔවුන් එක් එක් කිරීමට අවකාශීය ගැඹුර-නැණවත් convolution ස්ථරය ඒකාබද්ධ හා වෙනුවට self.query``self.key , සහ self.value .

59self.query=nn.Sequential(self.query,SpatialDepthWiseConvolution(self.d\_k))60self.key=nn.Sequential(self.key,SpatialDepthWiseConvolution(self.d\_k))61self.value=nn.Sequential(self.value,SpatialDepthWiseConvolution(self.d\_k))

Trending Research Paperslabml.ai