始める無料で始める

フィードフォワード・サブレイヤー

フィードフォワード・サブレイヤーは、アテンションの出力を非線形な抽象表現へ写像し、複雑な関係をよりよく捉えられるようにします。

この演習では、エンコーダ専用のトランスフォーマ向けに FeedForwardSubLayer を作成します。これは2つの線形層の間に ReLU 活性化関数を挟んだ構成になります。さらに、入力埋め込みの次元と、線形層間の中間次元を表す2つのパラメータ d_modeld_ff を受け取ります。

d_modeld_ff はすでに用意されています。

この演習はコースの一部です

PyTorchで学ぶTransformerモデル

コースを見る

演習の手順

  • フィードフォワード・サブレイヤークラスで、d_model と層間の次元 d_ff を用いて、1つ目と2つ目の線形層および ReLU 活性化を定義します。
  • forward() メソッドで、入力を各層と活性化関数に順に通します。
  • 用意された d_modeld_ff(それぞれ 5122048)で FeedForwardSubLayer をインスタンス化し、入力埋め込み x に適用します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

class FeedForwardSubLayer(nn.Module):
    def __init__(self, d_model, d_ff):
        super().__init__()
        # Define the layers and activation
        self.fc1 = ____
        self.fc2 = ____
        self.relu = ____

    def forward(self, x):
        # Pass the input through the layers and activation
        return self.____(self.____(self.____(x)))
    
# Instantiate the FeedForwardSubLayer and apply it to x
feed_forward = ____
output = ____
print(f"Input shape: {x.shape}")
print(f"Output shape: {output.shape}")
コードを編集して実行