2017-12-20 9 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'}) 

は今のところ、私は2つのリスト、私はPythonで効果的に呼び出し元の関数を作るためにold_scope_1_listnew_scope_1_listを使用して機能init_from_checkpointを呼び出すことができますどのように

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] 

がありますか?私の現在のソリューションは、それが二つのリストを使用せずに、怒鳴るなど100行を記述しているが、それはあなたがold_scope_1_listとnew_scope_1_listからペアのリストを作成するzipfunctionを使用することができます

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

の可能性のある重複した[地図二つのリストPythonで辞書に](https://stackoverflow.com/questions/209840/map- 2つのリストを辞書に入れる) – 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

関連する問題