Импорт произвольного количества файлов Python - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть разные файлы 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
...

это работает, но яприходится жестко кодировать каждый импорт.Кроме того, я не смог создать экземпляры по индексу или получить доступ к ним по индексу, чтобы сравнить их все.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Использование 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>
0 голосов
/ 19 декабря 2018

Используйте __import__() функцию вместо import оператора.Как это:

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

Тогда вы можете получить к ним доступ, как modules[x].DQNSolver

...