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.ハードシュリンク | ハード収縮関数を要素ごとに適用するために使用します。 | |
3) torch.nn.LeakyReLU | 要素ごとの関数を適用するために使用します。 LeakyReLu(x)=max(0,x) +negative_slope*min(0,x) | |
4) torch.nn.LogSigmoid | 要素ごとの関数を適用するために使用します。 | |
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 | 論文で説明されているように、ランダム化された漏洩整流線形単位関数を要素ごとに適用するために使用されます。 | |
10) トーチ.nn.SELU | これは、要素ごとの関数を次のように適用するために使用されます。 SELU(x)=スケール*(最大(0,x)+最小(0,a*(exp(x)-1))) ここで、α= 1.6732632423543772848170429916717、スケール = 1.0507009873554804934193349852946 です。 | |
11) トーチ.nn.TARGET | これは、要素ごとの関数を次のように適用するために使用されます。 | |
12) トーチ.nn.シグモイド | これは、要素ごとの関数を次のように適用するために使用されます。 | |
13) トーチ.nn.ソフトプラス | これは、要素ごとの関数を次のように適用するために使用されます。 | |
14) torch.nn.ソフトシュリンク | 次のように要素ごとにソフト収縮関数を適用するために使用します。 | |
15) トーチ.nn.ソフトサイン | これは、要素ごとの関数を次のように適用するために使用されます。 | |
16) トーチ.nn.タン | これは、要素ごとの関数を次のように適用するために使用されます。 | |
17) トーチ.nn.タンシュリンク | これは、要素ごとの関数を次のように適用するために使用されます。 Tanhshrink(x)=x-Tanh(x) | |
18) torch.nn.しきい値 | 入力テンソルの各要素のしきい値を設定するために使用されます。しきい値は次のように定義されます。 | |
7。 | 非線形活性化(その他) | |
1) トーチ.nn.ソフトミン | これは、n 次元の入力テンソルにソフトミン関数を適用して再スケーリングするために使用されます。その後、n 次元の出力テンソルの要素は 0、1、合計が 1 までの範囲に収まります。ソフトミンは次のように定義されます。 | |
2) torch.nn.ソフトマックス | これは、n 次元の入力テンソルにソフトマックス関数を適用して再スケーリングするために使用されます。その後、n 次元の出力テンソルの要素は 0、1、合計が 1 までの範囲に収まります。ソフトマックスは次のように定義されます。 | |
3) torch.nn.Softmax2d | これは、各空間位置にフィーチャ上に SoftMax を適用するために使用されます。 | |
4) torch.nn.LogSoftmax | LogSoftmax 関数を n 次元の入力 Tensor に適用するために使用されます。 LofSoftmax 関数は次のように定義できます。 | |
5) torch.nn.AdaptiveLogSoftmaxWithLoss | これは、大きな出力空間でモデルをトレーニングするための戦略です。ラベルの分布が著しく偏っている場合に非常に効果的です。 | |
8. | 正規化層 | |
1) torch.nn.BatchNorm1d | 2D または 3D 入力に対してバッチ正規化を適用するために使用されます。 | |
2) torch.nn.BatchNorm2d | 4D 上にバッチ正規化を適用するために使用されます。 | |
3) torch.nn.BatchNorm3d | 5D 入力に対してバッチ正規化を適用するために使用されます。 | |
4) torch.nn.GroupNorm | これは、入力のミニバッチに対してグループ正規化を適用するために使用されます。 | |
5) torch.nn.SyncBatchNorm | これは、n 次元の入力に対してバッチ正規化を適用するために使用されます。 | |
6) torch.nn.InstanceNorm1d | これは、3D 入力に対してインスタンスの正規化を適用するために使用されます。 | |
7) torch.nn.InstanceNorm2d | これは、4D 入力に対してインスタンスの正規化を適用するために使用されます。 | |
8) torch.nn.InstanceNorm3d | これは、5D 入力に対してインスタンスの正規化を適用するために使用されます。 | |
9) torch.nn.LayerNorm | これは、入力のミニバッチに対してレイヤー正規化を適用するために使用されます。 | |
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 を入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。 | |
3) トーチ.nn.GRU | これは、多層ゲート反復ユニット (GRU) RNN を入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。 | |
4) torch.nn.RNNCell | これは、tanh または ReLU 非線形性を持つ Elman RNN セルを入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。 h'=tanh(W彼らx+b彼ら+Wふーんh+bふーん) Tanh の代わりに ReLU が使用されます | |
5) torch.nn.LSTMCell | これは、長期短期記憶 (LSTM) セルを入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。 ここで、σ はシグモイド関数、* はアダマール積です。 | |
6) torch.nn.GRUCell | これは、ゲート付きリカレント ユニット (GRU) セルを入力シーケンスに適用するために使用されます。各層は、入力シーケンス内の各要素に対して次の関数を計算します。 | |
10. | 線状層 | |
1) torch.nn.アイデンティティ | これは、引数を区別しないプレースホルダー ID 演算子です。 | |
2) トーチ.nn.リニア | これは、受信データに線形変換を適用するために使用されます。 y=xAT+b | |
3) torch.nn.バイリニア | これは、受信データに双一次変換を適用するために使用されます。 y=x1斧2+b | |
十一。 | ドロップアウトレイヤー | |
1) トーチ.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 の間のコサイン類似度を返します。 | |
2) torch.nn.PairwiseDistance | p ノルムを使用して、ベクトル v1、v2 間のペアごとの距離をバッチ単位で計算します。 | |
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 つの入力が類似しているか相違しているかを測定するために使用されます。損失関数は次のように定義されます。 | |
12) torch.nn.MultiLabelMarginLoss | これは、入力 x と出力 y の間のマルチクラス多分類ヒンジ損失を最適化する基準を作成するために使用されます。 | |
13) torch.nn.SmoothL1Loss | これは、要素ごとの絶対誤差が 1 を下回る場合は 2 乗項を使用し、それ以外の場合は L1 項を使用する基準を作成するために使用されます。これはフーバー損失としても知られています。 | |
14) torch.nn.SoftMarginLoss | これは、1 または -1 を含む入力テンソル x とターゲット テンソル y の間の 2 クラス分類ロジスティック損失を最適化する基準を作成するために使用されます。 | |
15) torch.nn.MultiLabelSoftMarginLoss | これは、入力 x とサイズ (N, C) のターゲット y の間の最大エントロピーに基づいて、マルチラベルの 1 対全損失を最適化する基準を作成するために使用されます。 | |
16) torch.nn.CosineEmbeddingLoss | これは、指定された入力テンソル x1、x2 および値 1 または -1 のテンソル ラベル y の損失を測定する基準を作成するために使用されます。コサイン距離を使用して、2 つの入力が類似しているか相違しているかを測定するために使用されます。 | |
17) torch.nn.マルチマージンロス | これは、入力 x と出力 y の間のマルチクラス分類ヒンジ損失を最適化する基準を作成するために使用されます。 | |
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