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

最初のページへ

目次へ戻る