FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Kerasの学習後パラメータを保存する(CNNの場合)

KerasでCNNを使った手書き文字認識MNISTの学習を行い、学習後のパラメータ(係数)を保存したい。
保存といっても学習の途中で中断して、再開時に読み込んで、、、というためのものではない。
出力した係数のファイルをmacOSアプリでロードし、Metal Performance Shadersで使うため。
強化学習をしたいがためこんな面倒なことをやっている。早くMPSで学習もできるようになりますように。

CNNの場合係数の出力方法が全結合層の場合と少し異なる。

iOSのMPSCNNに渡すモデルパラメータのフォーマット / TensorFlowからの書き出し

↑こちらはTensorFlowの場合だけど大変参考になる。というか肝心なtranspose部分はそのままで、Kerasだからといって変わらない。
ウエイトとバイアスの保存部分↓
{
    w = cnnlayer.get_weights()[0].transpose(3,0,1,2)
    b = cnnlayer.get_weights()[1]
    
    with open(fileName_w, 'wb') as f:
        f.write(w.tobytes())
    with open(fileName_b, 'wb') as f:
        f.write(b.tobytes())
}
↑Kerasだと畳み込み層の係数へはこんな感じでアクセスできる。
{
    w = fclayer.get_weights()[0].transpose(1,0)
    b = fclayer.get_weights()[1]
}
↑なお、全結合層の場合だとこんな感じになる。



<< Storyboardで部品を選ぶ方法  TopPage  MPSImageオブジェクトから予測結果のfloat値を得る >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1211-848af22f




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad