式(31)を使って正規乱数を計算している部分です。前半はオブジェクトの定義の部分です。配列から指定された個数ランダムに抜き出して配列として返します。確率的勾配降下など、データをランダムにサンプリングする用途で使っています。配列のサイズが指定サイズ以下ならそのまま返します。新しい配列が規定の数になるまでループします。平均と標準偏差を取得します。式(28)、(29)に対応します。配列を指定された平均と標準偏差で正規化します。式(30)に対応します。}};ユニットタイプユニットタイプを定義します。このタイプをユニットオブジェクトにセットすることで、ユニットに応じた処理を行うようにします。ここではバイアスユニットという特別なユニットも定義しました。出力層のユニットです。厳密にはコンストラクタではないと思いますが、コンストラクタのようなものとさせてください。関する知識はスライムレベルです。全結合層の場合は前の層の全ユニットからの出力の合計とバイアスの合計です。今回はバイアスユニットの出力と重みも加算されます。出力値(バイアスの出力は1固定になります。誤差逆伝播法で重要な要素になります。ユニットオブジェクトに持たせます。左側結合は中間層と出力層にしかないので他のユニットタイプの場合は例外を出すといったようなチェックをしています。層間結合を保持するオブジェクトです。内部には結合の両側のユニットオブジェクト、重み、重みの差分を保持しています。誤差逆伝播の計算中は更新前の値が必要になるためです。}};多層ニューラルネットワークのメイン部分のコンストラクタメイン部分です。長いですが重要な処理をしています。