2017-12-20 1 views
1

Ich habe eine FunktionWie Eingang der Funktion effektiver zu verwenden?

init_from_checkpoint(
ckpt_dir_or_file, 
assignment_map) 

wo assignment_map unterstützt folgende Syntax:

'checkpoint_scope_name /': 'SCOPE_NAME /' - alle Variablen in der aktuellen SCOPE_NAME von checkpoint_scope_name mit passenden Tensor Namen laden.

Zum Beispiel

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

Im Moment habe ich zwei Liste

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] 

Wie konnte ich die Funktion init_from_checkpoint mit old_scope_1_list und new_scope_1_list rufen Sie die Aufruffunktion effektiv in Python zu machen? Meine aktuelle Lösung ist, dass 100 Zeilen wie unten schreiben, ohne die beiden Listen zu verwenden, aber es sieht ineffektiv Weg

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

Mögliches Duplikat [Karte zwei Listen in ein Wörterbuch in Python] (https://stackoverflow.com/questions/209840/map- two-lists-in-a-dictionary-in-python) – Mel

+0

Sie könnten auch einfach eine Liste der Variablennamen haben und nur eine Zeichenkette mit dem alten/neuen Bereich verketten, um zu bekommen, was Sie brauchen, damit Sie nur einen haben Ort, um Dinge zu ändern. –

Antwort

4

Sie zipfunction verwenden Liste von Paaren aus old_scope_1_list und new_scope_1_list zu machen. Und dann verwenden Sie dict auf diese Paare, um die Zuordnung zu erstellen, die Sie benötigen.

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'} 

Also in Ihrem Fall würde der Code:

init_from_checkpoint('/tmp/model.ckpt', dict(zip(old_scope_1_list, new_scope_1_list))) 
+0

Großartig. Lassen Sie es mich überprüfen und später bestätigen – Jame

+0

Danke. Es hat gut funktioniert – Jame

Verwandte Themen