tgoop.com/matlabtips/1710
Create:
Last Update:
Last Update:
اما وقتی با تانسورهایی با بیش از دو بعد کار میکنیم، دیگر "سطر" و "ستون" معنا ندارد چون ابعاد بیشتر شدهاند. مثلاً در یک تانسور با شکل (B,T,D) نمیتوان بهسادگی گفت کدام "سطر" است و کدام "ستون" — بنابراین بهجای transpose، از تابعی بهنام permute یا transpose(dim1, dim2) استفاده میشود.
x = torch.randn(32, 64, 128) # shape: (B, T, D)
x_t = x.transpose(1, 2) # shape: (B, D, T)
ترتیبدهی مجدد کامل ابعاد تانسور:
x = torch.randn(32, 64, 128)
x_perm = x.permute(2, 0, 1) # shape: (128, 32, 64)
در attention ما معمولاً کاری مثل این انجام میدهیم:
Q @ K.transpose(-2, -1)
اگر دقت کنید ما فقط نیاز داریم که دو محور آخر را جابجا کنیم (با محور اول که برای batch ست کاری نداریم). حتما کد های بالا را اجرا کنید تا متوجه تفاوت بشوید
BY MatlabTips
Share with your friend now:
tgoop.com/matlabtips/1710