1-07 学習済みモデル(係数とバイアス)のセーブ
重み係数とバイアスはCSVファイルとしてセーブしておきます。現状はすべて小数ですが、後の章でこれらを整数化します。
●1層目の重み係数とバイアス
1層目の重み係数は図1‐58のようにget_weights()[0]で取り出します。shapeを見ると(3,
3, 3, 16)となっており、最初の2つは3×3のカーネル、次の3は入力チャネル、最後の16は出力チャネルにかかる係数です。全部で3x3x3x16
= 432個をCSV形式(コンマ区切り)でw1.csvにセーブします。
1層目のバイアスは同図のようにget_weights()[1]で取り出します。shapeは(16,)であり、要素数は16個、すべてb1.csvにセーブします。 |
図1-58 1層目の重み係数とバイアスのセーブ
Pythonを走らすと係数とバイアスのファイルが生成されています。CSV形式なのでEXCELで開くことができます。
w1.csvは図1‐59のようにすべて小数で、27×16=432個あります(*1)。
(*1)1〜9行目までは入力ch0にかかる係数、10〜18行目までは入力ch1にかかる係数、19〜27行目は入力ch2にかかる係数。カーネルが3×3なので9行で一区切りになる。
b1.csvは図1‐60のようになります。これらも小数で16個あります。 |
図1-59 w1.csvに1層目の重み係数
図1-60 b1.csvに1層目のバイアス
●6層目の重み係数とバイアス
6層目の重み係数も図1‐61のようにget_weights()[0]で取り出します。shapeを見ると(128, 43)となっており(*2)、最初の128は入力チャネル、最後の43は出力チャネルにかかる係数です。全部で128x43 = 5504個をCSV形式でセーブします。
(*2)5,6層目は全結合層なので係数の数は入力×出力になる
6層目のバイアスは同図のようにget_weights()[1]で取り出します。shapeは(43,)であり、要素数は43個、すべてCSVにセーブします。
|
図1-61 6層目の重み係数とバイアスのセーブ
w6.csvは図1‐62のようにすべて小数で、43×128=5504個あります。
b6.csvは図1‐63のようになります。これらも小数で43個あります。 |
図1-62 w6.csvに6層目の重み係数
図1-63 b6.csvに6層目のバイアス
●ここに倣ってPythonコードを実行します。正解率は98%台(毎回微妙に変わる)。main_float.pyを実行すると以下のファイルが生成されます。
重み係数ファイル |
w1.csv, w2.csv, w3.csv, w4.csv, w5.csv, w6.csv |
バイアスファイル |
b1.csv, b2.csv, b3.csv, b4.csv, b5.csv, b6.csv |
|
最初のページへ
目次へ戻る
|