2016-12-08 6 views
3

テンソルフローツールを使用してニューラルネットワークを作成しました。 すべてが動作していますが、今ではニューラルネットワークの最終的な重みをエクスポートして、1つの予測方法を作成したいと考えています。 どうすればいいですか?テンソルフローを使用したニューラルネットワークのウェイトのエクスポート

+0

https://nathanbrixius.wordpress.com/2016/05/24/checkpointing-and-reusing-tensorflow-models/ – martianwars

答えて

2

tf.train.Saverクラスを使用してトレーニングの最後にモデルを保存する必要があります。

Saverオブジェクトを初期化するときに、保存するすべての変数のリストを渡す必要があります。最も重要な点は、これらの保存された変数を別の計算グラフで使用できることです。

は、

# Assume you want to save 2 variables `v1` and `v2` 
saver = tf.train.Saver([v1, v2]) 

tf.Sessionオブジェクトを使用して、もちろん

saver.save(sess, 'filename'); 

をあなたの変数を保存を使用してSaverオブジェクトを作成し、あなたがglobal_stepのような追加の詳細を追加することができます。

restore()関数を使用して、将来変数を復元することができます。復元された変数は、これらの値に自動的に初期化されます。

+1

パラメータの生データを取得することは可能ですか?他のプラットフォームでテンソルフロー訓練モデルを実行したいのですが、どうしたらいいですか? –

+2

'sess.run(weights)'を使ってウェイトの最終値を取得し、numpy配列にエクスポートすることができます。たとえば、 – martianwars

+0

です。もう1つの問題:ネットで 'tf.nn.rnn_cell.LSTMCell'を使用しましたが、' LSTMCell'オブジェクトの重み/バイアスにどうやってアクセスできますか? –

0

上記の答えは、セッションスナップショットを保存/復元するための標準的な方法です。ただし、他のテンソルフローツールで使用するためにネットワークを1つのバイナリファイルとしてエクスポートする場合は、さらにいくつかの手順を実行する必要があります。例えば、freeze the graph。 TFは、対応するツールを提供します。あなたがoptimize it for inferenceことができ、またはany other toolを使用する、ということをやった

#!/bin/bash -x 

# The script combines graph definition and trained weights into 
# a single binary protobuf with constant holders for the weights. 
# The resulting graph is suitable for the processing with other tools. 


TF_HOME=~/tensorflow/ 

if [ $# -lt 4 ]; then 
    echo "Usage: $0 graph_def snapshot output_nodes output.pb" 
    exit 0 
fi 

proto=$1 
snapshot=$2 
out_nodes=$3 
out=$4 

$TF_HOME/bazel-bin/tensorflow/python/tools/freeze_graph --input_graph=$proto \ 
    --input_checkpoint=$snapshot \ 
    --output_graph=$out \ 
    --output_node_names=$out_nodes 

:私はこのようにそれを使用します。

関連する問題