2017-10-06 2 views
3

モデルAを訓練しましたが、そのうちの1つが出力用に固定されており、次のネットワーク用に訓練可能であるため、2モデルのAインスタンスが必要です。 私は2つのvariable_scope A_trainA_untrainが、私は訓練された事前variable_scopeA_untrainAモデルを設計し、この範囲でも、モデルを復元し、コードのように:tensorflowでは、特定のvariable_scope変数を別の特定のvariable_scopeに復元する方法はありますか?

saver_untrain = tf.train.Saver(tf.get_collection(
            tf.GraphKeys.GLOBAL_VARIABLES, 
            'A_untrain')) 
saver_path = '~/models/model.ckpt' 
# here pre-train model A 
saver_untrain.save(sess, saver_path) 

は、今私は、同じモデルにへAパラメータを復元する必要がありますスコープA_trainの同じモデルですが、ckptファイルがA_untrain/input_w1 instreadのA_train/input_w1のようなパラメータを復元するため、前のコードに従うことができません。私は、私の問題の解決策があるのか​​、それとも訓練可能でもう一つが非人道的な2つのインスタンスを作るためのより良い解決策があるかどうかを知りたい。どうもありがとう。

EDIT_1:私は、私は次のように私の必要性の使用コードを実現することができます知っている:

saver_train = tf.train.Saver({'A_untrain/input_w1': A_train.input_w1}) 

が、私の変数の量が大きい場合には、実用的になりますので、私は代わりに復元するvariable_scopeを使用する必要があります特定の変数の名前。

答えて

0

最後にnumpyで解決策が見つかりました。訓練されたパラメータを '* .npy'の形式で保存することができます。パラメータをロードする必要があるときは、np.loadのnpyファイルを使用して、セッション内でtf.assign()を呼び出してvalueを割り当てます。これは、variable_scopeが何であっても機能します。

関連する問題