logo

PyTorch の torch.nn

PyTorch は、ニューラル ネットワークの作成とトレーニングに役立つ torch.nn モジュールを提供します。まず、これらのモデルの機能を使用せずに、MNIST データセットで基本的なニューラル ネットワークをトレーニングします。基本的な PyTorch テンソル機能のみを使用し、その後、一度に 1 つの機能を torch.nn から段階的に追加します。

torch.nn は、ニューラル ネットワークを実装およびトレーニングするためのさらに多くのクラスとモジュールを提供します。

nn パッケージには、次のモジュールとクラスが含まれています。

はい・いいえ クラスとモジュール 説明
1. torch.nn.パラメータ これは、モジュール パラメーターとして考慮されるテンソルのタイプです。
2. コンテナ
1) torch.nn.モジュール これは、すべてのニューラル ネットワーク モジュールの基本クラスです。
2) torch.nn.シーケンシャル これは、モジュールがコンストラクターに渡されるのと同じ順序で追加される順次コンテナーです。
3) torch.nn.ModuleList これにより、サブモジュールがリストに保持されます。
4) torch.nn.ModuleDict これにより、サブモジュールがディレクトリに保持されます。
5) torch.nn.ParameterList これにより、パラメータがリストに保持されます。
6) torch.nn.parameterDict これにより、パラメータがディレクトリに保持されます。
3. 畳み込み層
1) torch.nn.Conv1d このパッケージは、複数の入力プレーンで構成される入力信号に 1D 畳み込みを適用するために使用されます。
2) torch.nn.Conv2d このパッケージは、複数の入力プレーンで構成される入力信号に 2D 畳み込みを適用するために使用されます。
3) torch.nn.Conv3d このパッケージは、複数の入力プレーンで構成される入力信号に 3D 畳み込みを適用するために使用されます。
4) torch.nn.ConvTranspose1d このパッケージは、複数の入力プレーンで構成される入力イメージに 1D 転置畳み込み演算子を適用するために使用されます。
5) torch.nn.ConvTranspose2d このパッケージは、複数の入力プレーンで構成される入力イメージに 2D 転置畳み込み演算子を適用するために使用されます。
6) torch.nn.ConvTranspose3d このパッケージは、複数の入力プレーンで構成される入力画像に 3D 転置畳み込み演算子を適用するために使用されます。
7) トーチ.nn.展開 これは、バッチ化された入力テンソルからスライディング ローカル ブロックを抽出するために使用されます。
8) トーチ.nn.フォールド これは、スライディング ローカル ブロックの配列を大きな包含テンソルに結合するために使用されます。
4. プーリング層
1) torch.nn.MaxPool1d これは、複数の入力プレーンで構成される入力信号に 1D 最大プーリングを適用するために使用されます。
2) torch.nn.MaxPool2d これは、複数の入力プレーンで構成される入力信号に 2D 最大プーリングを適用するために使用されます。
3) torch.nn.MaxPool3d これは、複数の入力プレーンで構成される入力信号に 3D 最大プーリングを適用するために使用されます。
4) torch.nn.MaxUnpool1d これは、MaxPool1d の部分逆数を計算するために使用されます。
5) torch.nn.MaxUnpool2d これは、MaxPool2d の部分逆数を計算するために使用されます。
6) torch.nn.MaxUnpool3d これは、MaxPool3d の部分逆関数を計算するために使用されます。
7) torch.nn.AvgPool1d これは、複数の入力プレーンで構成される入力信号に 1D 平均プーリングを適用するために使用されます。
8) torch.nn.AvgPool2d これは、複数の入力プレーンで構成される入力信号に 2D 平均プーリングを適用するために使用されます。
9) torch.nn.AvgPool3d これは、複数の入力プレーンで構成される入力信号に 3D 平均プーリングを適用するために使用されます。
10) torch.nn.FractionalMaxPool2d これは、複数の入力プレーンで構成される入力信号に 2D フラクショナル最大プーリングを適用するために使用されます。
11) torch.nn.LPPool1d これは、複数の入力プレーンで構成される入力信号に 1D 電力平均プーリングを適用するために使用されます。
12) torch.nn.LPPool2d これは、複数の入力プレーンで構成される入力信号に 2D 電力平均プーリングを適用するために使用されます。
13) torch.nn.AdavtiveMaxPool1d これは、複数の入力プレーンで構成される入力信号に 1D 適応最大プーリングを適用するために使用されます。
14) torch.nn.AdavtiveMaxPool2d これは、複数の入力プレーンで構成される入力信号に 2D 適応最大プーリングを適用するために使用されます。
15) torch.nn.AdavtiveMaxPool3d これは、複数の入力プレーンで構成される入力信号に 3D 適応最大プーリングを適用するために使用されます。
16) torch.nn.AdavtiveAvgPool1d これは、複数の入力プレーンで構成される入力信号に 1D 適応平均プーリングを適用するために使用されます。
17) torch.nn.AdavtiveAvgPool2d これは、複数の入力プレーンで構成される入力信号に 2D 適応平均プーリングを適用するために使用されます。
18) torch.nn.AdavtiveAvgPool3d これは、複数の入力プレーンで構成される入力信号に 3D 適応平均プーリングを適用するために使用されます。
5. パディングレイヤー
1) torch.nn.ReflectionPad1d 入力境界の反射を使用して入力テンソルをパディングします。
2) torch.nn.ReflactionPad2d 入力境界の反射を使用して入力テンソルをパディングします。
3) torch.nn.ReplicationPad1 入力境界のレプリケーションを使用して入力テンソルをパディングします。
4) torch.nn.ReplicationPad2d 入力境界のレプリケーションを使用して入力テンソルをパディングします。
5) torch.nn.ReplicationPad3d 入力境界のレプリケーションを使用して入力テンソルをパディングします。
6) torch.nn.ZeroPad2d 入力テンソル境界をゼロで埋め込みます。
7) torch.nn.ConstantPad1d 入力テンソル境界を定数値でパディングします。
8) torch.nn.ConstantPad2d 入力テンソル境界を定数値でパディングします。
9) torch.nn.ConstantPad3d 入力テンソル境界を定数値でパディングします。
6. 非線形アクティベーション (加重和、非線形性)
1) トーチ.nn.ELU 要素ごとの関数を適用するために使用します。
ELU(x)=最大(0,x)+最小(0,α*(exp(x)-1))
2) torch.nn.ハードシュリンク ハード収縮関数を要素ごとに適用するために使用します。
PyTorch の torch.nn
3) torch.nn.LeakyReLU 要素ごとの関数を適用するために使用します。
LeakyReLu(x)=max(0,x) +negative_slope*min(0,x)
4) torch.nn.LogSigmoid 要素ごとの関数を適用するために使用します。
PyTorch の torch.nn
5) torch.nn.マルチヘッドアテンション これは、モデルがさまざまな表現部分空間からの情報に対応できるようにするために使用されます。
6) torch.nn.PReLU これは要素ごとの関数を適用するために使用されます。
PReLU(x)=最大(0,x)+a*最小(0,x)
7) トーチ.nn.ReLU 修正された線形単位関数を要素ごとに適用するために使用します。
ReLU(x)=max(0,x)
8) トーチ.nn.ReLU6 これは要素ごとの関数を適用するために使用されます。
ReLU6(x)=min(max(0,x),6)
9) トーチ.nn.RReLU 論文で説明されているように、ランダム化された漏洩整流線形単位関数を要素ごとに適用するために使用されます。
PyTorch の torch.nn
10) トーチ.nn.SELU これは、要素ごとの関数を次のように適用するために使用されます。
SELU(x)=スケール*(最大(0,x)+最小(0,a*(exp(x)-1)))

ここで、α= 1.6732632423543772848170429916717、スケール = 1.0507009873554804934193349852946 です。
11) トーチ.nn.TARGET これは、要素ごとの関数を次のように適用するために使用されます。
PyTorch の torch.nn
12) トーチ.nn.シグモイド これは、要素ごとの関数を次のように適用するために使用されます。
PyTorch の torch.nn
13) トーチ.nn.ソフトプラス これは、要素ごとの関数を次のように適用するために使用されます。
PyTorch の torch.nn
14) torch.nn.ソフトシュリンク 次のように要素ごとにソフト収縮関数を適用するために使用します。
PyTorch の torch.nn
15) トーチ.nn.ソフトサイン これは、要素ごとの関数を次のように適用するために使用されます。
PyTorch の torch.nn
16) トーチ.nn.タン これは、要素ごとの関数を次のように適用するために使用されます。
PyTorch の torch.nn
17) トーチ.nn.タンシュリンク これは、要素ごとの関数を次のように適用するために使用されます。
Tanhshrink(x)=x-Tanh(x)
18) torch.nn.しきい値 入力テンソルの各要素のしきい値を設定するために使用されます。しきい値は次のように定義されます。
PyTorch の torch.nn
7。 非線形活性化(その他)
1) トーチ.nn.ソフトミン これは、n 次元の入力テンソルにソフトミン関数を適用して再スケーリングするために使用されます。その後、n 次元の出力テンソルの要素は 0、1、合計が 1 までの範囲に収まります。ソフトミンは次のように定義されます。
PyTorch の torch.nn
2) torch.nn.ソフトマックス これは、n 次元の入力テンソルにソフトマックス関数を適用して再スケーリングするために使用されます。その後、n 次元の出力テンソルの要素は 0、1、合計が 1 までの範囲に収まります。ソフトマックスは次のように定義されます。
PyTorch の torch.nn
3) torch.nn.Softmax2d これは、各空間位置にフィーチャ上に SoftMax を適用するために使用されます。
4) torch.nn.LogSoftmax LogSoftmax 関数を n 次元の入力 Tensor に適用するために使用されます。 LofSoftmax 関数は次のように定義できます。
PyTorch の torch.nn
5) torch.nn.AdaptiveLogSoftmaxWithLoss これは、大きな出力空間でモデルをトレーニングするための戦略です。ラベルの分布が著しく偏っている場合に非常に効果的です。
8. 正規化層
1) torch.nn.BatchNorm1d 2D または 3D 入力に対してバッチ正規化を適用するために使用されます。
PyTorch の torch.nn
2) torch.nn.BatchNorm2d 4D 上にバッチ正規化を適用するために使用されます。
PyTorch の torch.nn
3) torch.nn.BatchNorm3d 5D 入力に対してバッチ正規化を適用するために使用されます。
PyTorch の torch.nn
4) torch.nn.GroupNorm これは、入力のミニバッチに対してグループ正規化を適用するために使用されます。
PyTorch の torch.nn
5) torch.nn.SyncBatchNorm これは、n 次元の入力に対してバッチ正規化を適用するために使用されます。
PyTorch の torch.nn
6) torch.nn.InstanceNorm1d これは、3D 入力に対してインスタンスの正規化を適用するために使用されます。
PyTorch の torch.nn
7) torch.nn.InstanceNorm2d これは、4D 入力に対してインスタンスの正規化を適用するために使用されます。
PyTorch の torch.nn
8) torch.nn.InstanceNorm3d これは、5D 入力に対してインスタンスの正規化を適用するために使用されます。
PyTorch の torch.nn
9) torch.nn.LayerNorm これは、入力のミニバッチに対してレイヤー正規化を適用するために使用されます。
PyTorch の torch.nn
10) torch.nn.LocalResponseNorm これは、チャネルが 2 番目の次元を占める、いくつかの入力プレーンで構成される入力信号にローカル応答正規化を適用するために使用されます。
9. 反復レイヤー
1) トーチ.nn.RNN これは、tanh または ReLU 非線形性を備えた多層 Elman RNN を入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。
ht=tanh(W彼らバツt+b彼ら+Wふーんtt-1+bふーん)
2) torch.nn.LSTM これは、多層長短期記憶 (LSTM) RNN を入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。
PyTorch の torch.nn
3) トーチ.nn.GRU これは、多層ゲート反復ユニット (GRU) RNN を入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。
PyTorch の torch.nn
4) torch.nn.RNNCell これは、tanh または ReLU 非線形性を持つ Elman RNN セルを入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。
h'=tanh(W彼らx+b彼ら+Wふーんh+bふーん)
Tanh の代わりに ReLU が使用されます
5) torch.nn.LSTMCell これは、長期短期記憶 (LSTM) セルを入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。
PyTorch の torch.nn
ここで、σ はシグモイド関数、* はアダマール積です。
6) torch.nn.GRUCell これは、ゲート付きリカレント ユニット (GRU) セルを入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。
PyTorch の torch.nn
10. 線状層
1) torch.nn.アイデンティティ これは、引数を区別しないプレースホルダー ID 演算子です。
2) トーチ.nn.リニア これは、受信データに線形変換を適用するために使用されます。
y=xAT+b
3) torch.nn.バイリニア これは、受信データに双一次変換を適用するために使用されます。
y=x12+b
十一。 ドロップアウトレイヤー
1) トーチ.nn.ドロップアウト ニューロンの規則化と同時適応の防止に使用されます。の要因 PyTorch の torch.nnトレーニング中に出力がスケーリングされます。これは、モジュールが評価中に恒等関数を計算することを意味します。
2) torch.nn.Dropout2d 特徴マップ内の隣接するピクセルが相関している場合、torch.nn.Dropout はアクティベーションを正規化せず、実効学習率が低下します。この場合、torch.nn.Dropout2d() は、特徴マップ間の独立性を促進するために使用されます。
3) torch.nn.Dropout3d 特徴マップ内の隣接するピクセルが相関している場合、torch.nn.Dropout はアクティベーションを正規化せず、実効学習率が低下します。この場合、torch.nn.Dropout2d () は、特徴マップ間の独立性を促進するために使用されます。
4) torch.nn.AlphaDropout 入力にアルファ ドロップアウトを適用するために使用されます。アルファ ドロップアウトは、自己正規化特性を維持するドロップアウトの一種です。
12. まばらな層
1) torch.nn.埋め込み これは、単語の埋め込みを保存し、インデックスを使用してそれらを取得するために使用されます。モジュールへの入力はインデックスのリストであり、出力は対応する単語の埋め込みです。
2) torch.nn.EmbeddingBag これは、中間埋め込みをインスタンス化せずに、埋め込みの「バッグ」の合計または平均を計算するために使用されます。
13. 距離関数
1) torch.nn.コサイン類似度 これは、dim に沿って計算された、x1 と x2 の間のコサイン類似度を返します。
PyTorch の torch.nn
2) torch.nn.PairwiseDistance p ノルムを使用して、ベクトル v1、v2 間のペアごとの距離をバッチ単位で計算します。
PyTorch の torch.nn
14. 損失関数
1) torch.nn.L1ロス これは、入力 x とターゲット y の各要素間の平均絶対誤差を測定する基準に使用されます。未削減の損失は次のように説明できます。
l(x,y)=L={l1、...、ln},ln=|xn-そしてn|、
ここで、N はバッチ サイズです。
2) torch.nn.MSELoss これは、入力 x とターゲット y の各要素間の平均二乗誤差を測定する基準に使用されます。未削減の損失は次のように説明できます。
l(x,y)=L={l1、...、ln},ln=(xn-そしてn)2
ここで、N はバッチ サイズです。
3) torch.nn.CrossEntropyLoss この基準は、nn.LogSoftmax() と nn.NLLLoss() を 1 つのクラスに結合します。これは、C クラスを使用して分類問題をトレーニングするときに役立ちます。
4) torch.nn.CTCLoss コネクショニスト時間分類損失は、連続時系列とターゲット シーケンス間の損失を計算します。
5) torch.nn.NLLLoss 負の対数尤度損失は、C クラスで分類問題をトレーニングするために使用されます。
6) torch.nn.PoissonNLLLoss t のポアソン分布による負の対数尤度損失
ターゲット~ポアソン(入力)損失(入力,ターゲット)=入力-ターゲット*ログ(ターゲット!)ターゲット。
7) torch.nn.KLDivLoss これは、連続分布の距離測定に便利であり、連続出力分布の空間に対して直接回帰を実行する場合にも役立ちます。
8) torch.nn.BCELoss これは、ターゲットと出力の間のバイナリ クロス エントロピーを測定する基準を作成するために使用されます。未削減の損失は次のように説明できます。
l(x,y)=L={l1、...、ln},ln=-vn[そしてn*ログxn+ (1-yn)*log(1-xn)]、
ここで、N はバッチ サイズです。
9) torch.nn.BCEWithLogitsLoss これは、シグモイド層と BCELoss を 1 つの単一クラスに結合します。演算を 1 つの層に結合することで、数値の安定性を高めるために log-sum-exp トリックを利用できます。
10) torch.nn.MarginRankingLoss これは、指定された入力 x1、x2、2 つの 1D ミニバッチ テンソル、および 1 または -1 を含むラベル 1D ミニバッチ テンソル y の損失を測定する基準を作成します。ミニバッチ内の各サンプルの損失関数は次のとおりです。
損失(x,y)=max(0,-y*(x1-バツ2)+マージン
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss は、1 または -1 を含む指定された入力テンソル x とラベル テンソル y の損失を測定します。 2 つの入力が類似しているか相違しているかを測定するために使用されます。損失関数は次のように定義されます。
PyTorch の torch.nn
12) torch.nn.MultiLabelMarginLoss これは、入力 x と出力 y の間のマルチクラス多分類ヒンジ損失を最適化する基準を作成するために使用されます。
PyTorch の torch.nn
13) torch.nn.SmoothL1Loss これは、要素ごとの絶対誤差が 1 を下回る場合は 2 乗項を使用し、それ以外の場合は L1 項を使用する基準を作成するために使用されます。これはフーバー損失としても知られています。
PyTorch の torch.nn
14) torch.nn.SoftMarginLoss これは、1 または -1 を含む入力テンソル x とターゲット テンソル y の間の 2 クラス分類ロジスティック損失を最適化する基準を作成するために使用されます。
PyTorch の torch.nn
15) torch.nn.MultiLabelSoftMarginLoss これは、入力 x とサイズ (N, C) のターゲット y の間の最大エントロピーに基づいて、マルチラベルの 1 対全損失を最適化する基準を作成するために使用されます。
PyTorch の torch.nn
16) torch.nn.CosineEmbeddingLoss これは、指定された入力テンソル x1、x2 および値 1 または -1 のテンソル ラベル y の損失を測定する基準を作成するために使用されます。コサイン距離を使用して、2 つの入力が類似しているか相違しているかを測定するために使用されます。
PyTorch の torch.nn
17) torch.nn.マルチマージンロス これは、入力 x と出力 y の間のマルチクラス分類ヒンジ損失を最適化する基準を作成するために使用されます。
PyTorch の torch.nn
18) torch.nn.TripletMarginLoss これは、与えられた入力テンソル x1、x2、x3 の三重項損失と 0 より大きい値のマージンを測定する基準を作成するために使用されます。サンプル間の相対的な類似性を測定するために使用されます。トリプレットは、アンカー、正の例、および負の例で構成されます。
L(a,p,n)=max{d(a、p)-d(a、n)+マージン,0}
15。 ビジョンレイヤー
1) torch.nn.PixelShuffle これは、形状 (*,C×r) のテンソルで要素を再配置するために使用されます。2,H,W) を形状 (*,C,H×r,W,r) のテンソルに変換します。
2) torch.nn.アップサンプル これは、特定のマルチチャネル 1D、2D、または 3D データをアップサンプリングするために使用されます。
3) torch.nn.upsamplingNearest2d 複数の入力チャンネルで構成される入力信号に 2D 最近傍アップサンプリングを適用するために使用されます。
4) torch.nn.アップサンプリングBilinear2d 複数の入力チャンネルで構成される入力信号に 2D バイリニア アップサンプリングを適用するために使用されます。
16. DataParallel レイヤー(マルチ GPU、分散)
1) torch.nn.DataParallel これは、モジュール レベルでデータ並列処理を実装するために使用されます。
2) torch.nn.DistributedDataParallel これは、モジュール レベルの torch.distributed パッケージに基づく分散データ並列処理を実装するために使用されます。
3) torch.nn.DistributedDataParallelCPU これは、モジュール レベルで CPU の分散データ並列処理を実装するために使用されます。
17. 公共事業
1) torch.nn.clip_grad_norm_ これは、反復可能なパラメーターの勾配ノルムをクリップするために使用されます。
2) torch.nn.clip_grad_value_ これは、指定された値でパラメーターの反復可能オブジェクトの勾配ノルムをクリップするために使用されます。
3) torch.nn.parameters_to_vector パラメータを 1 つのベクトルに変換するために使用されます。
4) torch.nn.vector_to_parameters 1 つのベクトルをパラメータに変換するために使用されます。
5) torch.nn.weight_norm これは、指定されたモジュールのパラメーターに重み正規化を適用するために使用されます。
6) torch.nn.remove_weight_norm これは、モジュールから重みの正規化と再パラメータ化を削除するために使用されます。
7) torch.nn.spectral_norm これは、特定のモジュールのパラメーターにスペクトル正規化を適用するために使用されます。
8) torch.nn.PackedSequence これは、パックされたシーケンスのデータとバッチサイズのリストを保持するために使用されます。
9) torch.nn.pack_padded_sequence これは、可変長のパディングされたシーケンスを含む Tensor をパックするために使用されます。
10) torch.nn.pad_packed_sequence これは、可変長シーケンスのパックされたバッチをパディングするために使用されます。
11) torch.nn.pad_sequence 可変長 Tensor のリストをパディング値でパディングするために使用されます。
12) torch.nn.pack_sequence 可変長 Tensor のリストをパックするために使用されます
13) torch.nn.remove_spectral_norm これは、モジュールからスペクトル正規化と再パラメータ化を削除するために使用されます。

参照:

https://pytorch.org/docs/stable/nn.html