こんにちは、ヒガシです。
このページでは、学習済みのMLP(Multi Layer Perceptron)モデルから重みとバイアスを取得し、それらをcsvファイルに出力する方法をご紹介していきます。
Pythonが使えない環境下でAI計算する際などにぜひご活用ください。
それではさっそくやっていきましょう!
使用するMLPモデルの概要
今回は前回の記事にて作成したモデルを流用したいと思います。
モデルの概要は以下の通りです。
入力が4(上の画像には書いてないですが)、中間層が20,10、出力が1のMLPモデルです。
このモデルが変数modelに格納されていることを前提に話を進めていきます。
学習済モデルから重み、バイアスを取得する
まずは先ほど紹介したモデルから各層の重みとバイアスを変数として抜き出しましょう。
ここも前回の記事で紹介した通りですが、そのコードは以下の通りです。
#1層目の係数を取得
layer1 = model.layers[0]
L1_weights=layer1.get_weights()[0]
L1_bias=layer1.get_weights()[1]
#2層目の係数を取得
layer2 = model.layers[1]
L2_weights=layer2.get_weights()[0]
L2_bias=layer2.get_weights()[1]
#3層目の係数を取得
layer3 = model.layers[2]
L3_weights=layer3.get_weights()[0]
L3_bias=layer3.get_weights()[1]
これで各変数の中に各層の重み、バイアスが格納されています。
抜き出した重み、バイアスをcsvファイルに出力する
事前準備はここまで。本題に入っていきましょう。
それでは先ほど抜き取った各層の重みバイアスをcsvファイルに出力していきます。
そのコードは以下の通りです。
#取得した重み、バイアスをリストに入れておく
bias_list=[L1_bias,L2_bias,L3_bias]
weights_list=[L1_weights,L2_weights,L3_weights]
#csv化する際のファイル名を指定
bias_file_name=['L1B.csv','L2B.csv','L3B.csv']
weights_file_name=['L1W.csv','L2W.csv','L3W.csv']
num_layer=3
#biasのcsv化
for Layer in range(num_layer):
f=open(bias_file_name[Layer],'w')
B=bias_list[Layer]
for i in range(B.shape[0]):
f.write(str(B[i])+',')
f.close()
#weightsのcsv化
for Layer in range(num_layer):
f=open(weights_file_name[Layer],'w')
W=weights_list[Layer]
for j in range(W.shape[0]):
r=W[j,:]
for i in range(W.shape[1]):
f.write(str(r[i])+',')
f.write('\n')
f.close()
実行してみましょう。
実行フォルダには以下のようなファイルが出力されていました。
中身を見てみましょう。
L1W.csv, L1B.csvを開いてみます。
問題なくデータが出力されていますね。
おわりに
というわけで今回はMLPモデルが保有する重み、バイアスをcsvファイルに出力する方法をご紹介しました。
Python環境外でのAI計算の際などにぜひご活用ください。
次回は今回取得したcsvファイルを使って、エクセル上でニューラルネットワークの計算を再現してみようと思います。
【AI】ニューラルネットワークの計算をエクセルで再現する方法
このように、私のブログでは様々なスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント