2017-01-25 4 views
0

私はcaffe-tensorflowを使用してCaffeで実装されたResnetモデルをテンソルフローに転送するtensorflow-deeplab-resnet modelを使用しています。Tensorflow:Caffeからインポートしたモデルから変数にアクセスするには?

Caffeからインポートされたモデルから個々の変数にアクセスする方法を知りたいので、何がうまくいかないかを確認できます。

Iは

[...] 
res5c_branch2c/weights:0 
bn5c_branch2c/scale:0 
bn5c_branch2c/offset:0 
bn5c_branch2c/mean:0 
bn5c_branch2c/variance:0 
fc1_voc12_c0/weights:0 
fc1_voc12_c0/biases:0 
fc1_voc12_c1/weights:0 
fc1_voc12_c1/biases:0 
fc1_voc12_c2/weights:0 
fc1_voc12_c2/biases:0 
fc1_voc12_c3/weights:0 
fc1_voc12_c3/biases: 

を出力

allTrainVars = tf.trainable_variables() 
for f in allTrainVars: 
    print f.name 

を試みfc1_voc12_c*層をランダムに再初期化する必要が面白い層です。しかし、私はそれらにアクセスし、私はtensorboardでその変数を参照することはできません。この

var = [v for v in tf.trainable_variables() if v.name == "fc1_voc12_c0/weights:0"][0] 
tf.summary.histogram("fc1_voc12_c0/weights_0", var) 

のような変数へのロギングを追加しようとします。テンソルボードに表示されるのはグラフそのものだけです。

これらの変数をテンソルボードで監視するには、どうすればこれらの変数にアクセスできますか?
グラフを見るだけで、監視したい変数の正しい名前を推測できますか(写真参照)?

enter image description here

編集
私は、コードの作者が、今で固定されているバグがありましたので、少し私の質問の焦点を編集しました。

答えて

0

質問に記載されているようにしっかりと働いているようです。テンソルボードを完全にシャットダウンし、作成した新しいログファイルごとにテンソルボードを再起動するだけでした。

0

私の理解を明確にするために:古いバージョンからモデルの一部を復元し、残りをランダムに初期化しようとしています。

これが当てはまる場合は、tf.contrib.framework.init_from_checkpointを使用して、モデルの本体を古いチェックポイントから初期化することができます。残りのモデル(出力レイヤー)は、作成方法に基づいてランダムに初期化する必要があります。

+0

私は実際にそれを作成していませんでした。それは、caffeに組み込まれたdeeplab-resnetモデルから自動的に生成されました。それで私は個々の変数にアクセスしてランダム初期化を実行する方法を知らない – mcExchange

関連する問題