トークンをフーリエ変換と混合する」をPyTorchで実装したものです。この論文では、セルフアテンション層を2つのフーリエ変換に置き換えてトークンを混合します。7×これは自己注意よりも効率的です。沿って適用し、次にシーケンス次元に沿って適用します。R(Fseq​(Fhidden​(x)))ここで、xは埋め込み入力で、FRフーリエ変換を表し、複素数の実数成分を表します。これをPyTorchに実装するのはとても簡単です。この論文では、事前に計算されたDFT行列を使用し、行列の乗算を行ってフーリエ変換を行うことを提案しています。Newsを分類するためのトレーニングコードです。R(Fseq​(Fhidden​(x)))このモジュールの構造は、標準的なアテンションモジュールと同様の構造になっているため、簡単に交換できます。FNetMix(nn.Module):#通常のアテンションモジュールには、、、query、keyマスクにさまざまなトークンを埋め込むことができます。value同じ関数シグネチャに従うので、直接置換できます。FNetミキシングの場合x=query=key=value、マスキングはできません。value#トークンのミキシングはマスキングをサポートしていません。すべてのトークンに他のすべてのトークンの埋め込みが表示されます。Fhidden​(x)フーリエ変換の出力は複素数のテンソルです。