导入任意数量的 python 个文件

Importing an arbitrary amount of python files

我有不同的 python 个包含神经网络的文件。每个 python 文件都有关联的 weights.h5 文件。

现在我想制作一个 python 评估文件,加载所有网络/python 文件及其权重,为每个文件创建一个实例并比较它们的性能。

到目前为止,我尝试导入为包,但我无法通过索引访问模块。我如何导入所有模型并将它们的一个实例放入列表中,以便我可以通过索引访问它们?

一个例子

from evaluation.v03 import DQNSolver as DQN1
from evaluation.v04 import DQNSolver as DQN2
from evaluation.v05 import DQNSolver as DQN3
...

这可行,但我必须对每次导入进行硬编码。此外,我无法通过索引创建实例或通过索引访问它们以对所有实例进行比较。

使用__import__()函数代替import语句。像这样:

modules = []
for i in range(10):
  modules.append( __import__('evaluation.v{:>02}'.format(i)) )

然后你可以像modules[x].DQNSolver

一样访问它们

使用 import_module(),建议直接使用 __import__()

from importlib import import_module

solvers = [getattr(import_module(f'evaluation.v{i:02d}'), 'DQNSolver') for i in range(5)]

solver = solvers[1]()
# solver -> <evaluation.v01.DQNSolver object at 0x7f0b7b5e5e10>