එම්එල්පී-මික්සර්: දැක්ම සඳහා සර්ව එම්එල්පී ගෘහ නිර්මාණ ශිල්පයක්

මෙයකඩදාසි එම්එල්පී-මික්සර් හි පයිටෝච් ක්රියාත්මක කිරීමයි: දැක්ම සඳහා සර්ව එම්එල්පී ගෘහ නිර්මාණ ශිල්පය .

මෙමලිපිය දර්ශන කාර්යයන් පිළිබඳ ආකෘතිය අදාළ වේ. ආකෘතිය ට්රාන්ස්ෆෝමරයකට සමාන වන අතර අවධානය යොමු කරන තට්ටුවක් පැච් හරහා යොදන එම්එල්පී මගින් ප්රතිස්ථාපනය වේ (හෝ එන්එල්පී කර්තව්යයකදී ටෝකන).

MLPMixer අපගේ ක්රියාත්මක කිරීම අපගේ ට්රාන්ස්ෆෝමර් ක්රියාත්මක කිරීම ස්වයං අවධානය ස්ථරය සඳහා වෙනුවට පහත වැටීමක් වේ. එබැවින් එය කේත පේළි කිහිපයක් පමණක් වන අතර, අනුක්රමික මානය හරහා එම්එල්පී යෙදීම සඳහා ටෙන්සරය සම්ප්රේෂණය කරයි.

කඩදාසිදර්ශන කාර්යයන් සඳහා එම්එල්පී මික්සර් යෙදුවද, අපි එය වෙස් භාෂා ආකෘතියක්මත උත්සාහ කළෙමු. මෙන්න අත්හදා බැලීමේ කේතය.

View Run

29from typing import Optional
30
31import torch
32from torch import nn

MLPමික්සර්

මෙමමොඩියුලය ස්වයං අවධානය ස්ථරයසඳහා පතන වෙනුවට වේ. එය එම්එල්පී වෙත පෝෂණය කිරීමට පෙර ආදාන ටෙන්සරය සම්ප්රේෂණය කර ආපසු සම්ප්රේෂණය කරයි, එවිට එම්එල්පී විශේෂාංග මානය වෙනුවට අනුක්රමික මානය හරහා (ටෝකන හෝ රූප පැච් හරහා) යොදනු ලැබේ.

35class MLPMixer(nn.Module):
  • ffn MLP මොඩියුලය වේ.
45    def __init__(self, mlp: nn.Module):
49        super().__init__()
50        self.mlp = mlp

සාමාන්ය අවධානය යොමු කිරීමේ මොඩියුලය සඳහා විවිධ ටෝකන කාවැද්දීම් සහ වෙස් මුහුණක් සමඟ පෝෂණය කළ හැකිය.

අපිඑකම ක්රියාකාරී අත්සන අනුගමනය කරන අතර එමඟින් අපට එය කෙලින්ම ප්රතිස්ථාපනය කළ හැකිය.

MLPමිශ්ර කිරීම සඳහා, සහ ආවරණ කිරීම කළ නොහැක. query ( සහ key සහ value ) හැඩය වේ [seq_len, batch_size, d_model] .

52    def forward(self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor, mask: Optional[torch.Tensor] = None):

,, සහ සියල්ල එක හා සමාන විය යුතුය

64        assert query is key and key is value

MLPමික්සර් ආවරණ සඳහා සහය නොදක්වයි. එනම් සියලුම ටෝකන මගින් අනෙකුත් සියලුම ටෝකන කාවැද්දීම් දකිනු ඇත.

66        assert mask is None

පැහැදිලිකම x සඳහා පවරන්න

69        x = query

අවසානමානය අනුක්රමය මානයක් බව එසේ සම්ප්රේෂණය කරන්න. නව හැඩය [d_model, batch_size, seq_len]

73        x = x.transpose(0, 2)

ටෝකනහරහා එම්එල්පී යොදන්න

75        x = self.mlp(x)

නැවතමුල් ස්වරූපයට පරිවර්තනය කරන්න

77        x = x.transpose(0, 2)

80        return x