නොපැහැදිලිටයිල් සක්රීය කිරීම් (FTA)

Open In Colab Open In Comet

මෙය PyTorch ක්රියාත්මක කිරීම/නිබන්ධනයකි නොපැහැදිලි ටයිලිං සක්රීය කිරීම්: අන්තර්ජාලය හරහා විරල නිරූපණ ඉගෙන ගැනීම සඳහා සරල ප්රවේශයකි .

නොපැහැදිලිටයිල් සක්රිය කිරීම් යනු බයිනිං මත පදනම් වූ විරල ක්රියාකාරිත්වයකි.

Binningයනු කාල අන්තරයන් මත පදනම්ව පරිමාණ අගයක් බඳුනකට වර්ගීකරණය කිරීමයි. බින්ටින් කිරීමේ එක් ගැටළුවක් නම්, එය බොහෝ අගයන් සඳහා ශුන්ය අනුක්රමික ලබා දෙයි (බදුන් මායිමේ හැර). අනෙක බින් කාල පරතරයන් විශාල නම් බින්නිං නිරවද්යතාව නැති වීමයි.

වෙළෙඳගිවිසුමක් මෙම අවාසි ජය. ටයිල් ඇක්ටිවේෂන් වලදී මෙන් දෘඩ සීමාවන් වෙනුවට, එෆ්ටීඒ බඳුන් අතර මෘදු මායිම් භාවිතා කරයි. මෙය සියලු හෝ පුළුල් පරාසයක අගයන් සඳහා ශුන්ය නොවන අනුක්රමික ලබා දෙයි. තවද එය අර්ධ අගයන් වලින් අල්ලා ගන්නා බැවින් නිරවද්යතාවය නැති නොවේ.

ටයිල්ඇක්ටිවේෂන්

ටයිල් දෛශිකය,

ආදානපරාසය කොහේද, බින් ප්රමාණය වන අතර එය බෙදිය හැකිය.

ටයිල්සක්රිය කිරීම,

ආදානයධනාත්මක සහ වෙනත් ආකාරයකින් නම් ලබා දෙන දර්ශක ශ්රිතය කොහේද?

එයදුෂ්කර සීමාවන් ඇති බැවින් ටයිල් සක්රිය කිරීම ශුන්ය අනුක්රමික ලබා දෙන බව සලකන්න.

නොපැහැදිලිටයිල් ක්රියාකාරකම්

මෙමනොපැහැදිලි දර්ශකයක් කාර්යය,

එයරේඛීයව සිට කවදාද දක්වා වැඩි වන අතර එය සමාන වේ . යනු අධි පරාමිතියකි.

බඳුන්අතර මෘදු මායිම් නිර්මාණය කිරීමට FTA මෙය භාවිතා කරයි.

ට්රාන්ස්ෆෝමරයක් තුළ FTA භාවිතා කරන සරල අත්හදා බැලීමක් මෙන්න .

62import torch
63from torch import nn

නොපැහැදිලිටයිල් සක්රීය කිරීම් (FTA)

66class FTA(nn.Module):
  • lower_limit පහළ සීමාව වේ
  • upper_limit ඉහළ සීමාව වේ
  • delta බඳුනේ ප්රමාණය
  • eta සීමාවල මෘදු බව detemines බව පරාමිතිය වේ.
71    def __init__(self, lower_limit: float, upper_limit: float, delta: float, eta: float):
78        super().__init__()

දෛශිකටයිල් කිරීම ආරම්භ කරන්න

81        self.c = nn.Parameter(torch.arange(lower_limit, upper_limit, delta), requires_grad=False)

ආදානදෛශිකය බඳුන් සංඛ්යාවට සමාන සාධකයක් මගින් පුළුල් වේ

83        self.expansion_factor = len(self.c)

85        self.delta = delta

87        self.eta = eta

නොපැහැදිලිදර්ශක ශ්රිතය

89    def fuzzy_i_plus(self, x: torch.Tensor):
95        return (x <= self.eta) * x + (x > self.eta)
97    def forward(self, z: torch.Tensor):

ප්රමාණයේතවත් මානයක් එක් කරන්න . අපි මෙය බඳුන් බවට පුළුල් කරන්නෙමු.

100        z = z.view(*z.shape, 1)

103        z = 1. - self.fuzzy_i_plus(torch.clip(self.c - z, min=0.) + torch.clip(z - self.delta - self.c, min=0.))

මුල්මානයන් ගණනට නැවත හැඩගස්වා ගන්න. අවසාන මානයන් ප්රමාණය බඳුන් ගණන අනුව පුළුල් වේ,.

107        return z.view(*z.shape[:-2], -1)

FTAමොඩියුලය පරීක්ෂා කිරීමට කේතය

110def _test():
114    from labml.logger import inspect

ආරම්භකරන්න

117    a = FTA(-10, 10, 2., 0.5)

මුද්රණය

119    inspect(a.c)

බඳුන්ගණන මුද්රණය කරන්න

121    inspect(a.expansion_factor)

ආදානය

124    z = torch.tensor([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9., 10., 11.])

මුද්රණය

126    inspect(z)

මුද්රණය

128    inspect(a(z))
129
130
131if __name__ == '__main__':
132    _test()