22
14

More than 5 years have passed since last update.

kerasのmodel.get_weights()で得られるlistの構造

Last updated at Posted at 2017-05-08

 kerasで学習して得られた重みを自作のニューラルネットワークに適用する機会があったので調べました。

model.get_weights()について

 Keras Documentationにはこうあります。

model.get_weights(): モデルの全ての重みテンソル(Numpy配列)のリスト返します.

ということで、この関数は複数のNumpy配列で構成されたlistを返し、それが学習結果の重みを表しています。しかし、肝心のlistのこの部分がニューラルネットワークのどこの重みを指しているのか、ということについてはここには記述されていませんでした。

調査結果

 自作のニューラルネットワークに得られた重みを設定するなど試行錯誤を行ったり、色々検索を行った結果、このような構造になっているということがわかりました。記号の意味、ニューラルネットワークの構造は参考元の図に準じます。

## list[0]
[[w11(1) w12(1)]
 [w21(1) w22(1)]]
## list[1]
[w10(1) w20(1)]
## list[2]
[[w11(2)]
 [w12(2)]]
## list[3]
[w10(2)]

まとめ

 三層の全結合ニューラルネットワークの場合、list[0]から順に入力層→中間層への重み、中間層へのバイアス入力、中間層→出力層への重み、出力層へのバイアス入力、となるようです。

参考

http://ni4muraano.hatenablog.com/entry/2017/02/01/000000
https://keras.io/ja/models/about-keras-models/
https://groups.google.com/forum/#!topic/keras-users/kLm-bTvDTaw

22
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
14