ModuleNotFoundError: нет модуля с именем «losses.loss»; «потери» не являются ошибкой пакета при обучении модели MAT (PyTPython

Программы на Python
Anonymous
 ModuleNotFoundError: нет модуля с именем «losses.loss»; «потери» не являются ошибкой пакета при обучении модели MAT (PyT

Сообщение Anonymous »

Я пытаюсь точно настроить модель MAT (трансформатор маскированного внимания) из официального репозитория:
https://github.com/fenglinglwb/MAT
Однако во время обучения я постоянно получаю следующую ошибку:

Код: Выделить всё

ModuleNotFoundError: No module named 'losses.loss'; 'losses' is not a package
1. моя среда
Я использую VS Code Remote SSH для подключения к контейнеру разработки на удаленном сервере.
Внутри контейнера я создал виртуальную среду conda и установил зависимости вручную.
Вот основные версии:

Код: Выделить всё

python version:  3.7.16 (default, Jan 17 2023, 22:20:44)
[GCC 11.2.0]
numpy version:  1.21.6
torch version:  1.13.1+cu117
CUDA available:  True
CUDA version:  11.7
cuDNN version:  8500
opencv version:  4.5.5
2. Что я пробовал
**1) Добавлено

Код: Выделить всё

__init__.py
внутри папки loss/.**
(Существование подтверждено с помощью ls loss/, поэтому папка является действительным пакетом Python.)
2) Добавлен каталог MAT в sys.path внутри train.py.
3) Проверено наличие любых других модулей «потери» во всей conda окружающая среда:

Код: Выделить всё

find /opt/conda/envs/py37 -type d -name "losses"
→ другой конфликтующей папки не существует.
4) Подтверждено, что путь импорта разрешен правильно:

Код: Выделить всё

python -c "import losses; print(losses.__file__)"
5) В начало файла train.py добавлен следующий код:

Код: Выделить всё

import os, sys
current_dir = os.path.dirname(os.path.abspath(__file__))
if current_dir not in sys.path:
sys.path.insert(0, current_dir)
print(">>> PYTHONPATH:", sys.path[0])
6) Подтверждено, что я запускаю сценарий в корневом каталоге MAT:

Код: Выделить всё

cd /workspace/data/myname/MAT
python train.py
3. Дополнительная информация
Несмотря на все это, та же ошибка сохраняется:

Код: Выделить всё

ModuleNotFoundError: No module named 'losses.loss'; 'losses' is not a package
И моя структура папок выглядит так:

Код: Выделить всё

MAT/
├── train.py
├── training/
│   └── training_loop.py
├── dnnlib/
├── metrics/
├── losses/
│   ├── __init__.py
│   ├── loss.py
│   └── ...
Я подозреваю, что это может быть:
циклический импорт или
неправильная строка имени класса, переданная в dnnlib.util.construct_class_by_name() в Training_loop.py.
Кто-нибудь успешно настроил MAT или разрешил этот вид импорта ошибка?
Будем признательны за любые рекомендации 🙏

Подробнее здесь: https://stackoverflow.com/questions/797 ... package-er

Вернуться в «Python»