2016-04-05 9 views
4

大きなモデルの一部として学習した保存モデルをインポートする方法を理解しようとしています。Tensorflow:グラフ間で変数を転送する

具体的には、私は.ckptファイルに格納された大きなデータセットに訓練されたRNNといくつかの埋め込み行列(モデルA)を持っています。私はまた、このRNNの出力を操作し、それを分類に使用するために、この同じRNNと埋め込みモデルをサブモデルとして使用する別のモデル(モデルB)を持っています。これら二つのモデルのための

グラフの定義は異なりますが、私はこれを行うことができますどのようにモデルAの保存されたバージョンにモデルBを初期化したいのですが?

私の試みは、これまでに試してみて、別のセッションやグラフの下に別のモデルとして負荷モデルA、次にAからのものとモデルBに関連する行列を割り当てることですが、これは動作しません。

ここでは、コードの関連部分です:両方のモデルは、クラスをインスタンス化するときtf.get_variable()を使用してRNNためrnn_cell.linearから行列に割り当てられている明示的な変数を持ってい

sup = supervised() # spins up a class with an interactive session inside and sets up the graph 
g = tf.Graph() 
with g.as_default(): 
    unsup = unsupervised('unsup.ckpt') # loads in model A from file 
             # w/ another session (not interactive) 
    # get matrix from unsup and assign to sup 
    sup._word_embeddings.assign(unsup.session.run(unsup._word_embeddings)) 
    # do the same for the RNN 
    sup._gate_matrix.assign(unsup.session.run(unsup._gate_matrix)) 
    sup._gate_bias.assign(unsup.session.run(unsup._gate_bias)) 
    sup._cand_matrix.assign(unsup.session.run(unsup._cand_matrix)) 
    sup._cand_bias.assign(unsup.session.run(unsup._cand_bias)) 

注意。

ありがとうございます!

答えて

1

答えが簡単であることが判明しました。これは割り当て操作を作成することでした...割り当てを実際に行うには、適切なセッションで操作を実行します。

+1

こんにちは、あなたのソリューションを共有できますか? ありがとう – Sentient07

+0

申し訳ありません申し訳ありませんが、このコードはもう手元にありません。基本的にこれらの割り当て操作はすべて 'g 'で定義された象徴的な操作なので、実行するには' session.run'で 'g'を実行する必要があります。お役に立てれば。 – Taaam

+0

私がしようとしているのは、2つの異なるモデル(私は2つの異なるグラフと見なします)の重みを復元するために、最初の出力を2番目のグラフの入力にしたいのです – Sentient07

関連する問題