大きなモデルの一部として学習した保存モデルをインポートする方法を理解しようとしています。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))
注意。
ありがとうございます!
こんにちは、あなたのソリューションを共有できますか? ありがとう – Sentient07
申し訳ありません申し訳ありませんが、このコードはもう手元にありません。基本的にこれらの割り当て操作はすべて 'g 'で定義された象徴的な操作なので、実行するには' session.run'で 'g'を実行する必要があります。お役に立てれば。 – Taaam
私がしようとしているのは、2つの異なるモデル(私は2つの異なるグラフと見なします)の重みを復元するために、最初の出力を2番目のグラフの入力にしたいのです – Sentient07