මෙය PyTorch ක්රියාත්මක කිරීම/නිබන්ධනයකි නොපැහැදිලි ටයිලිං සක්රීය කිරීම්: අන්තර්ජාලය හරහා විරල නිරූපණ ඉගෙන ගැනීම සඳහා සරල ප්රවේශයකි.
නොපැහැදිලි ටයිල් සක්රිය කිරීම් යනු බින්නිං මත පදනම් වූ විරල ක්රියාකාරිත්වයේ ආකාරයකි.
බින්ටින් යනු කාල අන්තරයන් මත පදනම්ව පරිමාණ අගයක් බඳුනකට වර්ගීකරණය කිරීමයි. බින්ටින් කිරීමේ එක් ගැටළුවක් නම්, එය බොහෝ අගයන් සඳහා ශුන්ය අනුක්රමික ලබා දෙයි (බදුන් මායිමේ හැර). අනෙක බින් කාල පරතරයන් විශාල නම් බින්නිං නිරවද්යතාව නැති වීමයි.
වෙළෙඳ ගිවිසුමක් මෙම අවාසි ජය. ටයිල් ඇක්ටිවේෂන් වලදී මෙන් දැඩි සීමාවන් වෙනුවට FTA බඳුන් අතර මෘදු මායිම් භාවිතා කරයි. මෙය සියලු හෝ පුළුල් පරාසයක අගයන් සඳහා ශුන්ය නොවන අනුක්රමික ලබා දෙයි. තවද එය අර්ධ අගයන් වලින් අල්ලා ගන්නා බැවින් නිරවද්යතාව නැති නොවේ.
ටයිල් දෛශිකය,
ආදාන පරාසය කොතැනද, බින් ප්රමාණය වන අතර එය බෙදිය හැකිය.
ටයිල් සක්රිය කිරීම වේ,
ආදානය ධනාත්මක සහ වෙනත් ආකාරයකින් නම් ලබා දෙන දර්ශක ශ්රිතය කොහේද?
එය දුෂ්කර සීමාවන් ඇති බැවින් ටයිල් සක්රිය කිරීම ශුන්ය අනුක්රමික ලබා දෙන බව සලකන්න.
මෙම නොපැහැදිලි දර්ශකයක් කාර්යය,
එය රේඛීයව සිට කවදාද දක්වා වැඩි වන අතර එය සමාන වේ. යනු අධි-පරාමිතියකි.
බඳුන් අතර මෘදු මායිම් නිර්මාණය කිරීමට FTA මෙය භාවිතා කරයි.
ට්රාන්ස්ෆෝමරයක් තුළ FTA භාවිතා කරන සරල අත්හදා බැලීමක් මෙන්න.
61import torch
62from torch import nn
65class FTA(nn.Module):
lower_limit
පහළ සීමාව වේ upper_limit
ඉහළ සීමාව වේ delta
බඳුනේ ප්රමාණය eta
සීමාවල මෘදු බව detemines බව පරාමිතිය වේ. 70 def __init__(self, lower_limit: float, upper_limit: float, delta: float, eta: float):
77 super().__init__()
දෛශිකටයිල් කිරීම ආරම්භ කරන්න
80 self.c = nn.Parameter(torch.arange(lower_limit, upper_limit, delta), requires_grad=False)
ආදානදෛශිකය බඳුන් සංඛ්යාවට සමාන සාධකයක් මගින් පුළුල් වේ
82 self.expansion_factor = len(self.c)
84 self.delta = delta
86 self.eta = eta
88 def fuzzy_i_plus(self, x: torch.Tensor):
94 return (x <= self.eta) * x + (x > self.eta)
96 def forward(self, z: torch.Tensor):
ප්රමාණයේතවත් මානයක් එක් කරන්න . අපි මෙය බඳුන් බවට පුළුල් කරන්නෙමු.
99 z = z.view(*z.shape, 1)
102 z = 1. - self.fuzzy_i_plus(torch.clip(self.c - z, min=0.) + torch.clip(z - self.delta - self.c, min=0.))
මුල්මානයන් ගණනට නැවත හැඩගස්වා ගන්න. අවසාන මානයන් ප්රමාණය බඳුන් ගණන අනුව පුළුල් වේ,.
106 return z.view(*z.shape[:-2], -1)
109def _test():
113 from labml.logger import inspect
ආරම්භකරන්න
116 a = FTA(-10, 10, 2., 0.5)
මුද්රණය
118 inspect(a.c)
බඳුන්ගණන මුද්රණය කරන්න
120 inspect(a.expansion_factor)
ආදානය
123 z = torch.tensor([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9., 10., 11.])
මුද්රණය
125 inspect(z)
මුද්රණය
127 inspect(a(z))
128
129
130if __name__ == '__main__':
131 _test()