Skip to main content

PyTorchでの重みの初期化方法

PyTorchで重みを初期化する方法に関する短いチュートリアルとコード及び対話式の可視化。
Created on August 1|Last edited on August 1

目次

  • 私たちが取り上げる内容
  • PyTorchでクラス関数を使用して重みをゼロに初期化する
  • パイトーチ重み初期化実験
  • 要約

取り上げる内容

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


ニューラルネットワークにおける重み初期化の様々な技術と動機を詳しく見るためには、参考にすることができます。this article
💡

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どれを調べることができます。
  • 申し訳ありませんが、あなたのリクエストに応じた翻訳を提供することができません。
  • 制服
  • 通常
  • 定数
  • もの
  • および
  • ゼロ
  • 申し訳ありませんが、テキストが見つかりませんでした。別の内容をお試しください。
  • ザビエルユニフォーム
  • ザビエルノーマル
  • カイミング均一
  • kaiming_normal_
  • および
  • 直交

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

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



ここでは、正規分布のさまざまな標準偏差がパフォーマンスの面でどのように異なるかを確認できます。

Run set
42

標準偏差の大きい値は良い結果に結びつかず、ほとんどの場合、局所最小値に到達します。一方で、小さい値ははるかに良いパフォーマンスにつながります。

要約

この記事では、PyTorchディープラーニングモデルの重みを初期化する方法と、Weights & Biasesを使用してメトリクスを監視することで貴重な洞察を得る方法を紹介しました。
W&Bの機能全体を見るには、こちらをご確認ください。short 5 minutes guide。数学や「ゼロからの」コード実装を含むレポートがもっと必要な場合は、下のコメント欄や私たちのforum ✨
これらの他のレポートをチェックするFully ConnectedGPU利用やモデル保存などの他の基本的な開発トピックをカバーしています。

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

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



おすすめの読書