Heの初期値の実装方法
解決したいこと
Heの初期値の実装について
現在、CNNを用いた機械学習のコードを書いており、その中で「Heの初期値」と呼ばれる重みパラメータの初期値設定方法を組み込みたいと考えているのですがうまくいかず、どのように実装すればよいか教えていただきたいです。
発生している問題・エラー
このあたりのコードのどこかに導入すればよいと思うのですが、どうすればよいでしょうか。
ライブラリはkerasを用いています。
現在、CNNを用いた機械学習のコードを書いており、その中で「Heの初期値」と呼ばれる重みパラメータの初期値設定方法を組み込みたいと考えているのですがうまくいかず、どのように実装すればよいか教えていただきたいです。
このあたりのコードのどこかに導入すればよいと思うのですが、どうすればよいでしょうか。
ライブラリはkerasを用いています。
基本的には有名な初期化方法やレイヤ,活性化関数や損失関数などは全てライブラリに組み込まれております.Heの初期化も同様です.したがって,Kerasのドキュメントを読みましょう.Conv2Dのドキュメントは以下になります.
ここで書かれている内容のうち初期化について抜粋すると,
kernel_initializer: Initializer for the kernel weights matrix (see keras.initializers). Defaults to 'glorot_uniform'.
ですね.引数にデフォルト値kernel_initializer="glorot_uniform"
が適用されているそうです.引数kernel_initializer
の指定は他にもあるのでしょうか.検索欄から調べると次のページが出てきました.
「利用可能な初期化方法」の欄にhe_uniform
がありますね,これを適用すればHeの一様分布
$$
\theta \sim \mathcal{U}\left[-\sqrt{\frac{6}{n_{\textrm{in}}}}, \sqrt{\frac{6}{n_{\textrm{in}}}}\right]
$$
が適用されるようになっています.また,文字列指定での初期化指定だけでなく,ここにイニシャライザクラス
を渡すことでも実装が可能です.
したがって,
# 文字列指定
Conv2D(64, (3, 3), kernel_initializer = "he_uniform")
# クラス指定
Conv2D(64, (3, 3), kernel_initializer = tf.keras.initializers.HeUniform(seed=None))
で実装できます.
「うまくいかない」とおっしゃっていましたが,闇雲に取り組もうとするのではなく,一番信頼性の高い公式のドキュメントを辿って答えを見つけることをおおすすめします.
回答ではないですが、、、
タグは # 不要です。
タグはフォローできます。フォローしてるタグの質問に回答する人が多いです。
このプログラム言語はPythonですか?
それならば、Pythonに詳しい人が回答してくれるかもしれませんから、タグに python を入れるといいでしょう。
あとは、機械学習 や CNN を指定して、それらに詳しい人に記事を見てもらうといいでしょう。