26465


Tensorflowを使って学習したモデルはckptファイルというバイナリ?のファイルで保存されますが、それを他の言語でも使用できるJSONなどのファイル形式で保存することは可能でしょうか。またどのようにすればいいのでしょうか。教えて下さい。


CC BY-SA 3.0
2016-04-02T12:25:32.477
23687
2016-06-05T05:32:19.727
7232
question
tensorflow
Tensorflowの出力結果を他の言語から参照できるようにするには


ckptファイルを他のプログラムから読み込むのは難しいのではと思います。

代わりに、学習した重みやバイアスを保存して他で読み込むのであればnumpyのメソッドを使えばOKだと思います。

例えば mnistのサンプルの場合は通常は下記のように実行し戻り値はなしになっていますが、

[code]

    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
    
[/code]

これを下記のように変更して学習した重みとバイアスを取得するようにします。  
取得した行列はnumpyのarrayになっているので、numpyのメソッドを使ってバイナリ形式やcsv形式で保存できます。

[code]

    np_W, np_b, _ = sess.run([W, b, train_step], feed_dict={x: batch_xs, y_: batch_ys})
    numpy.save('filename', np_W)
    numpy.save('filename2', np_b)
    
[/code]

あるいは下記のようにeval()を使って直接目的のテンソーを計算させてnumpy配列で取得し保存してもOKです。

[code]

    numpy.save('filename', W.eval())
    numpy.save('filename2', b.eval())
    
[/code]

保存の仕方はバイナリやcsv形式がサポートされています。下記URLを参照してみて下さい。csv形式ならば他のアプリからも読み込みやすいとは思いますが、もしjsonが良ければcsvからjsonを作成するお好みのライブラリなどを利用すれば良いのではないでしょうか。

NumPy配列のファイル読み書き <https://hydrocul.github.io/wiki/numpy/ndarray-io.html>


CC BY-SA 3.0
2016-06-05T05:32:19.727
26465
2016-06-05T05:32:19.727
14195
23687
answer