Skip to main content

PyTorchでの重みの初期化方法

PyTorchで重みを初期化する方法に関する短いチュートリアル。コードとインタラクティブな可視化付き。
Created on August 1|Last edited on August 1

目次

内容について

この記事では、PyTorchモデルの様々な層の重みを初期化する方法を見ていきます。
テンサーフローとは異なり、PyTorchはさまざまな層の重みを初期化するための簡単なインターフェースを提供していません(ただし、torch.nn.init ですしたがって、XavierやHeの初期化のようなよく知られた手法に従って重みを初期化したい場合、難しくなります。
以下で重みの初期化方法を確認しますが、実行可能なColabで一緒に進めたい場合は、こちらからどうぞ:


ニューラルネットワークにおける重み初期化のさまざまな手法とその動機について詳しく見る場合は、参考文献を参照してください。この記事
💡

PyTorchでクラス関数を使って重みをゼロに初期化する方法

最も一般的な重みの初期化方法の一つは、クラス関数を使用し、最後に呼び出すことです。__init__カスタムPyTorchモデルの関数。
import torch.nn as nn class Model(nn.Module): # . . . def __init__(self): # . self.apply(self._init_weights) def _init_weights(self, module): if isinstance(module, nn.Linear): module.weight.data.normal_(mean=0.0, std=1.0) if module.bias is not None: module.bias.data.zero_()
このコードスニペットは、平均0、標準偏差1の正規分布からすべての重みを初期化し、すべてのバイアスをゼロに初期化します。これを他の層に拡張することも簡単です。nn.LayerNormnn.Embedding
def _init_weights(self, module): if isinstance(module, nn.Embedding): module.weight.data.normal_(mean=0.0, std=1.0) if module.padding_idx is not None: module.weight.data[module.padding_idx].zero_() elif isinstance(module, nn.LayerNorm): module.bias.data.zero_() module.weight.data.fill_(1.0)
他の機能も利用可能です。torch.nn.init調査できる

パイトーチ重み初期化実験

以下のWeights & Biasesチャートは、提供されたColabからのもので、重みの初期化をより良く示しています。もう一度見つけることができます:



ここでは、正規分布の様々な標準偏差が性能面でどのように異なるかを見ることができます。

Run set
42

標準偏差の値が大きいと良い結果が得られず、局所的な最小値に陥る可能性が高い。一方、小さい値ははるかに良いパフォーマンスにつながる。

要約

この記事では、PyTorchのディープラーニングモデルの重みを初期化する方法と、Weights & Biasesを使用してメトリクスを監視することで貴重な洞察が得られることを見ました。
W&Bのすべての機能を確認するには、こちらをご覧ください。5分間ガイド詳細な数学的解説やコードのゼロからの実装を含むレポートがもっと欲しい場合は、下のコメント欄または私たちのページでお知らせください。フォーラム ✨
これらの他のレポートをチェックしてください完全接続GPU利用とモデルの保存のような他の基本的な開発トピックをカバーする。

Weights & Biasesを試してください。

Weights & Biasesは、機械学習の実験を記録するのに役立ちます。ハイパーパラメータと実行からの出力メトリクスをログに記録し、結果を視覚化して比較し、同僚と迅速に共有してください。
始める5分以内にReplitで2つの実験を行い、W&Bがどのように作業を整理するのに役立つかを確認してください。以下の指示に従ってください。
指示:
  1. 下の緑の「実行」ボタンをクリックしてください。(最初に「実行」をクリックすると、Replitがマシンを割り当てるのに約30〜45秒かかります)
  2. 端末ウィンドウのプロンプトに従ってください。(右下のペイン)
  3. ターミナルウィンドウのサイズを変更できます。(右下)で詳細表示



おすすめの本