如何使用功能输入更有效? [关闭]

问题描述 投票:1回答:1

我有一个功能

init_from_checkpoint(
ckpt_dir_or_file,
assignment_map)

其中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]

我如何使用init_from_checkpointold_scope_1_list调用函数new_scope_1_list来在python中有效地调用函数?我目前的解决方案是在没有使用两个列表的情况下写下100行,但它看起来效果不佳

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'})
python python-3.x python-2.7
1个回答
4
投票

您可以使用zip function来生成old_scope_1_list和new_scope_1_list中的对列表。然后在这些对上使用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)))
© www.soinside.com 2019 - 2024. All rights reserved.