2017-12-20 3 views
1

난 기능을 가지고 다음 구문 assignment_map 지지체 함수의 입력을보다 효과적으로 사용하는 방법은 무엇입니까?

init_from_checkpoint(
ckpt_dir_or_file, 
assignment_map) 

:

'checkpoint_scope_name /' 'SCOPE_NAME은 /'- 매칭 텐서 이름 checkpoint_scope_name에서 현재 SCOPE_NAME 모든 변수들을로드한다. 예를 들어

,
init_from_checkpoint('/tmp/model.ckpt', 
        {'old_scope_1/var1': 'new_scope_1/var1', 
         'old_scope_1/var2': 'new_scope_1/var2'}) 

는 지금, 나는 두

old_scope_1_list=[old_scope_1/var1, old_scope_1/var2, ...,old_scope_1/var100] 
new_scope_1_list=[new_scope_1/var1, new_scope_1/var2, ...,new_scope_1/var100] 

은 어떻게 파이썬에서 효과적으로 호출하는 함수를 만들기 위해 old_scope_1_listnew_scope_1_list를 사용하여 함수 init_from_checkpoint 부를 수있는 목록이? 나의 현재 솔루션은이 두 목록을 사용하지 않고 울부 짖는 소리 100 선을 쓰기이지만, 당신은 zipfunction이 old_scope_1_list 및 new_scope_1_list에서 쌍 목록을 작성하는 데 사용할 수있는 효과적 방법

init_from_checkpoint('/tmp/model.ckpt', 
         {'old_scope_1/var1': 'new_scope_1/var1', 
          'old_scope_1/var2': 'new_scope_1/var2', 
          ... 
          'old_scope_1/var100': 'new_scope_1/var100'}) 
+1

가능한 중복 https://stackoverflow.com/questions/209840/map- 두 개의 목록 - 사전에 - 파이썬 사전) – Mel

+0

당신은 단지 변수 이름의 목록을 가질 수 있으며, 각각의 문자열을 이전/새로운 범위와 연결하여 필요한 것을 얻을 수 있으므로 하나만 가질 수 있습니다 물건을 바꾸는 곳. –

답변

4

보인다. 그런 다음 해당 쌍에 dict을 사용하여 필요한 매핑을 만듭니다.

In [67]: old_scope_1_list=['old_scope_1/var1', 
'old_scope_1/var2','old_scope_1/var100'] 
...: new_scope_1_list=['new_scope_1/var1', 
'new_scope_1/var2','new_scope_1/var100'] 


In [68]: zip(old_scope_1_list, new_scope_1_list) 
Out[68]: <zip at 0x7f4dd084c748> 

In [69]: x = zip(old_scope_1_list, new_scope_1_list) 

In [70]: dict(x) 
Out[70]: 
{'old_scope_1/var1': 'new_scope_1/var1', 
'old_scope_1/var100': 'new_scope_1/var100', 
'old_scope_1/var2': 'new_scope_1/var2'} 

그래서 귀하의 경우 코드는 다음과 같습니다

init_from_checkpoint('/tmp/model.ckpt', dict(zip(old_scope_1_list, new_scope_1_list))) 
([파이썬에서 사전에지도 두 목록]의
+0

좋아요. 내가 그것을 확인하고 나중에 확인하자 – Jame

+0

고마워. 잘 돌아갔다. – Jame

관련 문제