docs/si/transformers/fnet/index.html
[View code on Github](https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/transformers/fnet/ init.py)
මෙයකඩදාසි FNet හිPyTorch ක්රියාත්මක කිරීම: ෆූරියර් ට්රාන්ස්ෆෝම් සමඟ ටෝකන මිශ්ර කිරීම.
මෙමකඩදාසි ස්වයං අවධානය ස්තරය ප්රතිස්ථාපනය කරයි ෆූරියර් දෙකක් ටෝකන මිශ්ර කිරීමට පරිවර්තනය කරයි. මෙය ස්වයං අවධානයට 7× වඩා කාර්යක්ෂම වේ. ස්වයං අවධානයෙන් මෙය භාවිතා කිරීමේ නිරවද්යතාව නැතිවීම GLUE මිණුම් දණ්ඩේ BERT සඳහා 92% ක් පමණ වේ.
අපිFourier සැඟවුණු මානයක් (කාවැද්දීම මානයක්) හා පසුව අනුක්රමය මානයක් ඔස්සේ පරිණාමනය අදාළ වේ.
R(Fseq(Fhidden(x)))
කාවැද්දීමේ x ආදානය කොතැනද, F ෆූරියර් පරිණාමනය සඳහා R පෙනී සිටින අතර සංකීර්ණ සංඛ්යා වල සැබෑ සංරචකය නියෝජනය කරයි.
PyTorchමත ක්රියාත්මක කිරීම සඳහා මෙය ඉතා සරලයි - කේත 1 පේළියක් පමණි. කඩදාසි යෝජනා කරන්නේ පෙර සැකසූ ඩීඑෆ්ටී න්යාසයක් භාවිතා කිරීම සහ ෆූරියර් පරිවර්තනය ලබා ගැනීම සඳහා අනුකෘති ගුණ කිරීම ය.
AG News වර්ගීකරණය කිරීම සඳහා FNet පදනම් කරගත් ආකෘතියක් භාවිතා කිරීම සඳහා පුහුණු කේතය මෙන්න.
41fromtypingimportOptional4243importtorch44fromtorchimportnn
මෙමමොඩියුලය සරලව ක්රියාත්මක කරයි R(Fseq(Fhidden(x)))
මෙමමොඩියුලයේ ව්යුහය සම්මත අවධානය මොඩියුලයකට සමාන වන අතර එමඟින් අපට එය ප්රතිස්ථාපනය කළ හැකිය.
47classFNetMix(nn.Module):
සාමාන්ය අවධානය යොමු කිරීමේ මොඩියුලය සඳහා queryවිවිධ ටෝකන කාවැද්දීම් value සහ වෙස් මුහුණක් සමඟ පෝෂණය කළ හැකිය.key
අපිඑකම ක්රියාකාරී අත්සන අනුගමනය කරන අතර එමඟින් අපට එය කෙලින්ම ප්රතිස්ථාපනය කළ හැකිය.
FNetමිශ්ර කිරීම සඳහා, x=query=key=value සහ ආවරණ කිරීම කළ නොහැක. query ( සහ key සහ value ) හැඩය වේ [seq_len, batch_size, d_model] .
60defforward(self,query:torch.Tensor,key:torch.Tensor,value:torch.Tensor,mask:Optional[torch.Tensor]=None):
query,key, සහ value සියල්ලම ටෝකන් මිශ්ර කිරීම x සඳහා සමාන විය යුතුය
72assertqueryiskeyandkeyisvalue
ටෝකන්මිශ්ර කිරීම ආවරණ සඳහා සහය නොදක්වයි. එනම් සියලුම ටෝකන මගින් අනෙකුත් සියලුම ටෝකන කාවැද්දීම් දකිනු ඇත.
74assertmaskisNone
පැහැදිලිකම x සඳහා පවරන්න
77x=query
සැඟවුණු(කාවැද්දීම) මානය ඔස්සේ ෆූරියර් පරිණාමනය යොදන්න Fhidden(x)
ෆූරියර්පරිණාමයේ ප්රතිදානය සංකීර්ණ සංඛ්යාවල ආතතියකි.
84fft\_hidden=torch.fft.fft(x,dim=2)
අනුක්රමිකමානය ඔස්සේ ෆූරියර් පරිණාමනය යොදන්න Fseq(Fhidden(x))
87fft\_seq=torch.fft.fft(fft\_hidden,dim=0)
සැබෑසංරචකය ලබා ගන්න R(Fseq(Fhidden(x)))
91returntorch.real(fft\_seq)