NetInitialize

NetInitialize[net]

net 中の初期化されていない学習可能なすべてのパラメータに初期値が与えられたネットを与える.

NetInitialize[net,All]

学習可能なすべてのパラメータに初期値が与えられたネットを与える.

詳細とオプション

  • NetInitialize[net,All]は,net 中に既存の訓練パラメータあるいは設定済みの学習可能パラメータがあれば,それを上書きする.
  • NetInitializeは,重みを表すパラメータにランダムな値を,バイアスを表すパラメータに0を割り当てることが多い.
  • 次の任意のパラメータを含めることができる.
  • Method "Kaiming"どの初期化メソッドを使うか
    RandomSeeding1234擬似乱数生成器のシード
  • 以下はMethodの可能な設定である.
  • "Kaiming"層を介して伝播される際に,「Kaiming He et al (2015)で導入されたメソッドを使って配列の分散を維持する重みを選ぶ
    "Xavier"層を介して伝播される際に,「Xavier Glorot et al (2014)で導入されたメソッドを使って配列の分散を維持する重みを選ぶ
    "Orthogonal"直交行列になるように重みを選ぶ
    "Random"指定された一変量分布から重みを選ぶ
    "Identity"アフィン層を通して伝播される際に,配列成分を保存する重みを選ぶ
  • 特定のメソッドについてのサブオプションはMethod{"method",opt1val1,}で指定することができる.
  • メソッド"Kaiming""Xavier"については以下のサブオプションがサポートされている.
  • "Distribution""Normal""Normal"または"Uniform"
  • メソッド"Random"については以下のサブオプションがサポートされている.
  • "Weights"NormalDistribution[0,1]重み行列の初期化に使うランダム分布
    "Biases"Noneバイアスベクトルの初期化に使うランダム分布
  • メソッド"Identity"については以下のサブオプションがサポートされている.
  • "Distribution"NormalDistribution[0,0.01]対称性を破るために初期恒等行列にノイズを加えるために使われるランダム分布
  • 分布を期待する任意のサブオプションについて,数値 stddev を指定してNormalDistribution[0,stddev]を意味するとすることができる.
  • デフォルトで,どのメソッドもバイアスベクトルを0に初期化する.
  • RandomSeedingの可能な設定には以下がある.
  • Automatic関数が呼ばれるたびに自動的にシードし直す
    Inherited外部でシードされた乱数を使う
    seed明示的な整数または文字列をシードとして使う

例題

すべて開くすべて閉じる

  (1)

初期化されていない層を作る:

ランダムな重みを使って層を初期化する:

新規の初期化された重みを取り出す:

スコープ  (1)

重みとバイアスの両方について標準偏差が2の正規分布を使って"Random"初期化を指定する:

初期化された重みとバイアスを取り出してプロットする:

オプション  (1)

Method  (1)

ネットワークを定義する:

"Xavier"初期化を使ってネットを初期化する:

"Xavier"メソッドが一様分布からサンプルを取るように指定する:

最初の層の重みのヒストグラムをプロットする:

"Xavier"メソッドが正規分布からサンプルを取るように指定する:

最初の層の重みのヒストグラムをプロットする:

特性と関係  (2)

NetTrainは,訓練が始まる前に自動的にNetInitializeを呼び出す.単純な層の重みとバイアスは訓練前には初期化される:

訓練後に重みとバイアスを抽出する:

長さ1のベクトルを長さ1のベクトルにマップするネットを作る:

"Identity"メソッドを使ってネットを初期化する.結果として線形層を通過する際に配列成分を保存しようとするネットができる:

ネットの出力を入力の関数として可視化する:

別のメソッドでネットを初期化するとランダムな線形関数ができる:

考えられる問題  (2)

特定の層に属するパラメータには,NetInitializeMethodオプションとは無関係に,固定された初期化メソッドがある:

デフォルトで,NetInitializeRandomSeeding1234を使う.こうすると,NetInitializeが繰り返し呼ばれるたびに同じ乱数シードを使ってネットが初期化される:

RandomSeedingAutomaticを使って呼び出しのたびに異なる初期化がおこなわれるルようにする:

おもしろい例題  (1)

重みとバイアスに使われる値の大きさが,単一の値を長さ8のベクトルにマップする単純な非線形ネットにどのように影響するかを見る:

Wolfram Research (2016), NetInitialize, Wolfram言語関数, https://reference.wolfram.com/language/ref/NetInitialize.html (2022年に更新).

テキスト

Wolfram Research (2016), NetInitialize, Wolfram言語関数, https://reference.wolfram.com/language/ref/NetInitialize.html (2022年に更新).

CMS

Wolfram Language. 2016. "NetInitialize." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/NetInitialize.html.

APA

Wolfram Language. (2016). NetInitialize. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NetInitialize.html

BibTeX

@misc{reference.wolfram_2024_netinitialize, author="Wolfram Research", title="{NetInitialize}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/NetInitialize.html}", note=[Accessed: 25-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_netinitialize, organization={Wolfram Research}, title={NetInitialize}, year={2022}, url={https://reference.wolfram.com/language/ref/NetInitialize.html}, note=[Accessed: 25-November-2024 ]}