2017-08-10 5 views
0

Tensorflowには複数のアーキテクチャがあります。それらの中には、特定の部品の設計を共有するものもあります。異なる名前で同じ形状の重量を復元する方法Tensorflow?

ネットワークの1つを訓練し、別のネットワークで同様のレイヤの訓練された重みを使用したいと思います。

この時点で、私は必要な重みを保存して、変数にまったく同様の命名規則を使用してアーキテクチャにリロードすることができます。

ただし、2つのネットワークの重みが異なる場合、復元することはできません。

  • joint_network/C2W/var1の
:私はこれを持っている第2のネットワーク内

  • selector_network/C2W/var1の

:私は、第1のネットワークのため、この命名規則を持っています

それ以外は、変数は形状が似ています。再読み込み時に名前を変更したり、Tensorflowにそれらの変数に合う場所を伝える可能性はありますか?

EDIT:tensorflow_rename_variables私はTensorflowチェックポイントの変数の名前を変更することができます@batznerからこのスクリプトを見つけました。

動作しません。私は次のエラーを取得する:

ValueError: Couldn't find 'checkpoint' file or checkpoints in given directory ./joint_pos_tagger_lemmatizer/fi/ 

答えて

1

tf.train.Savervar_list引数の辞書を使用して、そのための組み込みサポートしています。この辞書は、チェックポイントファイル内のオブジェクトの名前を、復元する変数にマップします。

あなたの「セレクタネットワーク」のチェックポイントを使用して「共同ネットワーク」を復元したい場合、あなたはこのようにそれを行うことができます。

# var1 is the variable you want ot restore 
saver = tf.train.Saver(var_list={'selector_network/c2w/var1': var1}) 
saver.restore(...) 

あなたはより多くの変数を復元したい場合は、単純にする必要が辞書を拡張する。

関連する問題