@bacon_15

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Heの初期値の実装方法

解決したいこと

Heの初期値の実装について

現在、CNNを用いた機械学習のコードを書いており、その中で「Heの初期値」と呼ばれる重みパラメータの初期値設定方法を組み込みたいと考えているのですがうまくいかず、どのように実装すればよいか教えていただきたいです。

発生している問題・エラー

スクリーンショット (3).png

このあたりのコードのどこかに導入すればよいと思うのですが、どうすればよいでしょうか。
ライブラリはkerasを用いています。

0 likes

2Answer

基本的には有名な初期化方法やレイヤ,活性化関数や損失関数などは全てライブラリに組み込まれております.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))

で実装できます.

「うまくいかない」とおっしゃっていましたが,闇雲に取り組もうとするのではなく,一番信頼性の高い公式のドキュメントを辿って答えを見つけることをおおすすめします.

2Like

Comments

  1. ソースコードは画像での貼り付けでなく,質問のテンプレートにもあるとおり,コードブロック

    ```python:title
    コード本文
    ```

    のコード本文の位置に記述していただけるとありがたいです.

回答ではないですが、、、
タグは # 不要です。
タグはフォローできます。フォローしてるタグの質問に回答する人が多いです。

このプログラム言語はPythonですか?
それならば、Pythonに詳しい人が回答してくれるかもしれませんから、タグに python を入れるといいでしょう。
あとは、機械学習 や CNN を指定して、それらに詳しい人に記事を見てもらうといいでしょう。

1Like

Your answer might help someone💌