что означает np.load (opt.test_set) [()]? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь понять следующий код:

...
parser=argparse.ArgumentParser
parser.add_argument('--test_set', default='liberty', type=str)
parser.add_argument('--test_matches', default='xxxxx.txt', type=str)
...
def main(args):
    opt=parser.parse_args(args)
    ...
    def load_provider():
        p=np.load(opt.test_set)[()]
        for i.t in enumerate(['matches', 'nonmatches']):
            p[t] =p['match_data'][opt.test_matches][i]
        return p
...
if __name__=='__main__':
    main(sys.argv[1:])

Поэтому, когда я клонировал код и скачал набор данных, liberty - это папка с изображениями bmp и txt-файлами, поэтому при запускекод Я получил следующую ошибку:

IsADirectoryError: [Errno 21] Is a directory: 'liberty'

Я понимаю, np.load должен читать определенный файл вместо каталога, но я пытаюсь понять, что означает np.load(opt.test_set)[()].

1 Ответ

0 голосов
/ 11 сентября 2018

Это просто обычный numpy.load() вызов , за которым следует операция индексации ([...]) с пустым кортежем.

Следующее эквивалентно, с разделенными частями:

result = np.load(opt.test_set)
key = ()
p = result[key]

Почему код использует пустой кортеж в качестве ключа к тому, что np.load() должен был вернуть, не ясно без дополнительного контекста.

np.load() не поддерживает загрузку каталогов, полную остановку, и код, который вы разместили, не сделает ничего другого. Значение opt.test_set должно указывать на файл, а не на каталог, см. Документацию о том, что поддерживает .

Быстрый Google указывает мне на этот репозиторий GitHub , где инструкции, кажется, указывают, что код Python управляется скриптом Lua, который явно устанавливает test_set в конкретный файл, см. Тестирование существующих моделей секция .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...