2017-01-25 2 views
0

나는 caffe-tensorflow을 사용하여 Caffe에서 구현 된 Resnet 모델을 tensorflow로 전송하는 tensorflow-deeplab-resnet model을 사용하고 있습니다.Tensorflow : Caffe에서 가져온 모델에서 변수에 액세스하는 방법?

Caffe에서 가져온 모델의 개별 변수에 액세스 할 수있는 방법을 알고 싶습니다. 그래서 잘못되었는지 확인할 수 있습니다.

제가

[...] 
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: 

fc1_voc12_c* 층 임의로 초기화 할 필요가 흥미로운 층인 출력하는

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

시도. 그러나 이러한 변수에 액세스하려고 할 때이 변수에 로깅을 추가하려고하면

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) 

나는 tensorboard에서 해당 변수를 볼 수 없습니다. tensorboard에 표시되는 유일한 것은 그래프 자체입니다.

이러한 변수에 액세스하여 tensorboard로 모니터링하려면 어떻게합니까?
그래프를 보면서 모니터링하고 싶은 변수의 정확한 이름을 추측 할 수 있습니까? (그림 참조)?

enter image description here

편집
나는 코드의 저자가 지금까지 수정 된 버그가 있었다 조금부터 내 질문의 초점을 편집했다.

답변

0

질문에 설명 된 방식대로 제대로 작동하는 것으로 보입니다. 방금 생성 한 모든 새 로그 파일에 대해 tensorboard를 완전히 종료하고 tensorboard를 다시 시작해야했습니다.

0

내 이해를 명확히하기 위해 : 모델의 일부를 이전 버전에서 복원하고 나머지는 무작위로 초기화하려고합니다.

이 경우 사실 tf.contrib.framework.init_from_checkpoint을 사용하여 이전 체크 포인트에서 모델의 본문을 초기화 할 수 있습니다. 나머지 모델 (출력 레이어)은 생성 방법에 따라 임의로 초기화해야합니다.

+0

글쎄, 실제로 만들지는 않았지만, 카페에 내장 된 deeplab-resnet 모델에서 자동으로 생성되었습니다. 개별 변수에 액세스하고 무작위 초기화를 수행하는 방법을 모르겠습니다. – mcExchange

관련 문제